if语句不使用数据库

时间:2012-05-10 16:05:18

标签: php

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

$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。

3 个答案:

答案 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';
}

这样可行,但正如我之前所说,整个代码需要更新为更安全的版本。