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,即使我把它变成了假的。有什么想法吗?
发布于 2011-04-16 19:27:01
在您的情况下,这始终是真。
if ($row['check'] == true) {...}相同于
if ($row['check']) {...}检查$row['check']值而不是..。
if ($row['check'] == 'true') {...} ...if您有字符串true和/或false作为check列的值。
发布于 2011-04-16 19:29:29
当您使用mysql_fetch_assoc获得结果时,数组中的值类型几乎总是字符串(它们有时可能是null,但这不是问题所在)。
如果将任何非空字符串与true比较运算符进行比较,它们将计算为==。
返回的实际值将不是true。它可能是包含单词true或false的字符串。但是,与布尔型true相比,这两种方法都可以计算为true。
你应该比较什么取决于你的数据库里有什么.
您的评论表明该字段是一个枚举。这为您提供了两个可能的字符串,"true"和"false"。由于在PHP中,"false" == true是正确的行为(因为非空字符串的计算结果为true),因此需要与字符串值进行比较:
if ($row['check'] == "true") {https://stackoverflow.com/questions/5688929
复制相似问题