if ($cuser->loggedin()){
if (!empty($_POST['returnto']))
{
header("Location: ".htmlspecialchars($_POST['returnto']));
}
else
{
$query = ("SELECT id, username, check FROM users WHERE id=".$CURUSER['id']);
$result = do_mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
if ($row['check'] == true) {
echo 'omg';
} else {
echo 'omg false';
}
//To stop script executing next code ant print info...
die();
}
}
die();
}
但总是得到: omg 即使我将其更改为false。有什么想法吗?
答案 0 :(得分:2)
当您使用mysql_fetch_assoc
获得结果时,数组中值的类型几乎总是字符串(它们有时可能是null
,但这不是问题所在。)
如果您将其与true
比较运算符进行比较,则任何非空字符串都将评估为==
。
返回的实际值不是true
。它可以是包含单词true
或单词false
的字符串。但是,与布尔值true
相比,这两个值都将计算为true
。
你应该比较的确切取决于数据库中的内容......
您的评论表明该字段是枚举。这为您提供了两个可能的字符串"true"
和"false"
。由于在PHP中"false" == true
是正确的行为(因为非空字符串计算为true
),所以需要与字符串值进行比较:
if ($row['check'] == "true") {
答案 1 :(得分:1)
在你的情况下,这总是 TRUE
if ($row['check'] == true) {...}
与
相同if ($row['check']) {...}
检查$row['check']
值而不是......
if ($row['check'] == 'true') {...}
...如果您将字符串true
和/或false
作为check
列的值。