为什么这段代码不起作用?
$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。
为什么这段代码不起作用?
$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。
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';
}
你不应该这样构建你的查询,因为你不会受到 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);
根据 MySQL 文档,如果 select 语句成功,则返回资源,如果语句失败,则返回“false”。
尽管有更好、更安全的方法来实现您想要完成的目标,但您的陈述可以简单地修改为:
如果($欢迎 === 假) { echo '寄存器为 0'; } 别的 { echo '寄存器为 1'; }
这会起作用,但正如我之前所说,整个代码需要更新到更安全的版本。