php if语句在检查行时“断开”

ddarikpa  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(230)

我不能得到一个if语句来做“正确”的事情,代码;

public function getUID($email)
{
    $query = $this->dbh->prepare("SELECT id FROM users WHERE email = ?");
    $query->execute(array($email));

    $row = $query->fetch(\PDO::FETCH_ASSOC);

    alert($row, true);           // array(1) { ["id"]=> string(1) "0" }
    alert(is_array($row), true); // bool(true)
    alert($row == false, true);  // bool(false)
    if( $row == false ) {
        // Here we are!
        return false;
    }

    return $row['id'];
}

出于某种原因,if语句认为结果是真的,我不明白为什么:[]sql命令的输出似乎是正确的,我们应该得到一个id条目,它是0。。。
在写这个问题时,我考虑过放弃这个问题,而是将$row与null进行比较。但那没用。它仍然会返回false。。。

8ftvxx2r

8ftvxx2r1#

这个 if 显然没有坏,这个方法也没什么问题。正如@aynber所指出的那样 "0" 作为 false 使用时 == 比较事物。在这个方法之外,我做了一个测试,检查它是否返回 false ,如果不是的话,我会高兴地想“它从数据库返回了id。
因此,简单的解决方法是用 === . 比较类型和值。

相关问题