php mysql信息检索

时间:2011-04-16 19:18:23

标签: php mysql sql

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。有什么想法吗?

2 个答案:

答案 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列的值。