-1

所以我已经通过 SQL 连接到我的 PHP 数据库。

为了加载页面的某些部分,我在数据库中为“betaaccount”添加了一个字段,如果值为 1,则应加载页面对象,如果不是,则 else 语句将加载常规页面对象。

$result = mysqli_query($con,"SELECT * FROM tz_members WHERE alias = '$_SESSION[user]' &&     betaccount = '1'");

if ($_SESSION['user'] == $result)  {
    include 'support_beta_content.php';
    include 'footer.php';
} else {
    include 'support_content.php';
    include 'footer.php';
}

我对此仍然很陌生,我没有使用 PDO,因为我只是在本地进行此操作并进行试验,只是想了解如何使其正常工作。谢谢。

4

4 回答 4

0

此类 SQL 查询的正确语法是:

SELECT *
FROM   tz_members
WHERE  alias = '$_SESSION[user]' 
       AND betaccount = '1'

而不是||and&&你需要相应地使用ORand AND

于 2013-07-04T14:18:54.010 回答
0
$result = mysqli_query($con,"SELECT * FROM tz_members WHERE alias = '$_SESSION[user]' AND betaccount = '1'");

$user = mysqli_fetch_array($result,MYSQLI_ASSOC);
if ($_SESSION['user'] == $user['alias'])  {
    include 'support_beta_content.php';
    include 'footer.php';
} else {
    include 'support_content.php';
    include 'footer.php';
}

但在这种情况下,最好只检查结果是否有任何带有 mysqli_num_rows 的行

于 2013-07-04T14:23:53.137 回答
0

如果 alias 在您的数据库中包含唯一值,您可以尝试仅获取当前用户的字段 betaccount 并检查它是否为 1。

$result = mysqli_query($con,"SELECT betaccount FROM tz_members WHERE alias = '{$_SESSION['user']}'");

$finfo = mysql_fetch_field($result)
 if($finfo->betacount == 1){
    include 'support_beta_content.php';
    include 'footer.php';
  }
else
  {
  include 'support_content.php';
  include 'footer.php';
  }

对于 mysql_fetch_field 见这里

于 2013-07-04T14:28:03.917 回答
0

你的代码中有很多东西表明你正在学习 PHP/MySQL;我建议您找到一些教程来帮助您完成此过程,并按照它们进行操作。

首先,正如@mishik 所写,您的 SQL 查询可能无效。

其次,如果字段 betaacount 是数字数据类型,则应去掉引号 ( AND betaccount = 1)。

接下来,正如@Kelu Thatsall 所写(以及评论), $result 变量不保存查询的输出 - 它是结果的句柄。从逻辑上讲,您可能会决定,如果您返回 1 行,则该用户是 beta 用户,否则他们不是,在这种情况下,代码变为

$result = mysqli_query($con,"SELECT 1 FROM tz_members WHERE alias = '$_SESSION[user]' and     betaccount = '1'");

if (1 == $result->num_rows)  {
    include 'support_beta_content.php';
    include 'footer.php';
} else {
    include 'support_content.php';
    include 'footer.php';
}

这会在数据库和 PHP 脚本之间传输稍微不同的数据,这会稍微高效一些。

最后,请告诉我您了解 SQL 注入 -$_SESSION['user']已正确转义,不是吗?

于 2013-07-04T14:31:22.067 回答