我不能得到一个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。。。
1条答案
按热度按时间8ftvxx2r1#
这个
if
显然没有坏,这个方法也没什么问题。正如@aynber所指出的那样"0"
作为false
使用时==
比较事物。在这个方法之外,我做了一个测试,检查它是否返回false
,如果不是的话,我会高兴地想“它从数据库返回了id。因此,简单的解决方法是用
===
. 比较类型和值。