为什么这段代码不起作用?
$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。
答案 0 :(得分:3)
MySQL成功时返回resource,错误时返回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';
}
答案 1 :(得分: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);
答案 2 :(得分:0)
根据MySQL文档,如果select语句成功则返回资源,如果语句失败则返回'false'。
虽然有更好,更安全的方式来实现您想要实现的目标,但您的陈述可以简单地修改为:
if($welcome === false) { echo 'register is 0'; } else { echo 'register is 1'; }
这样可行,但正如我之前所说,整个代码需要更新为更安全的版本。