我无法获得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-command的输出似乎是正确的,我们应该得到一个0的id-entry。
在写这个问题时,我考虑放弃这个问题并将$ row与NULL进行比较。但这并没有帮助。它仍然会返回虚假......
答案 0 :(得分:0)
if
显然没有被破坏,这种方法没有任何问题。正如@aynber指出的那样,当使用"0"
来比较事物时,PHP会将false
视为==
。在这个方法之外,我有一个测试,检查它返回false
,如果不是我很高兴,并认为“它从数据库返回ID。
因此,简单的解决方案是使用===
进行此检查。比较类型和价值。