PHP mysql信息检索


php mysql info retrieve

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

当您获得mysql_fetch_assoc的结果时,数组中值的类型几乎总是字符串(它们可能偶尔是null,但这不是这里的问题)。

如果与==比较运算符比较,任何非空字符串的计算结果都为true

返回的实际值不会是true。它可以是包含单词true或单词false的字符串。但是,与布尔值true相比,这两个值的值都是true

确切地说,你应该比较什么取决于你的数据库中有什么…


您的注释表明该字段是枚举。这将为您提供两个可能的字符串,"true""false"。由于在PHP中"false" == true是正确的行为(因为非空字符串计算为true),您需要与字符串值进行比较:

if ($row['check'] == "true") {

这始终是TRUE

if ($row['check'] == true) {...}

一样
if ($row['check']) {...}

检查$row['check']值…

if ($row['check'] == 'true') {...} 

…如果您有字符串true和/或false作为check列的值