-3

为什么这段代码不起作用?

$welcome = mysql_query("SELECT welcome FROM users WHERE id = '" . $_SESSION['user']['id'] . "'");

if($welcome == '0')
{
echo 'register is 0';
}
else
{
echo 'register is 1';
}

$_SESSION['user']['id']顺便说一句,返回为 1。

4

3 回答 3

3

MySQL 成功返回资源,错误返回 false,而不是查询中的值。尝试这个:

$welcome = mysql_query("SELECT welcome FROM users WHERE id = '" . $_SESSION['user']['id'] . "'");
$row = mysql_fetch_assoc($welcome);
if($row['welcome']== '0')
{
echo 'register is 0';
}
else
{
echo 'register is 1';
}
于 2012-05-10T16:09:33.550 回答
1

你不应该这样构建你的查询,因为你不会受到 SQL 注入攻击的保护。

$query = sprintf("SELECT welcome FROM users WHERE id = %d", $_SESSION['user']['id']);
// Perform Query
$result = mysql_query($query);

一旦完成,您就需要从结果中获取,您不能只查询它。

if(!$result)
  echo "Error"; // Deal with it
$row = mysql_fetch_assoc($result);
echo $row['welcome'];
mysql_free_result($result);
于 2012-05-10T16:10:33.837 回答
0

根据 MySQL 文档,如果 select 语句成功,则返回资源,如果语句失败,则返回“false”。
尽管有更好、更安全的方法来实现您想要完成的目标,但您的陈述可以简单地修改为:

如果($欢迎 === 假)
{
  echo '寄存器为 0';
}
别的
{
  echo '寄存器为 1';
}

这会起作用,但正如我之前所说,整个代码需要更新到更安全的版本。

于 2012-05-10T16:54:04.940 回答