【发布时间】:2018-01-05 17:01:12
【问题描述】:
我无法使用 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 命令的输出似乎是正确的,我们应该得到一个 0 的 id 条目...
在写这个问题时,我想过放弃这个问题并将 $row 与 NULL 进行比较。但这无济于事。它仍然会返回 false...
【问题讨论】:
-
$row的确切值是多少?似乎这可能是一个“真实”的值,这让我认为你的 if 需要一个不同的条件,这听起来也像你在想的那样。 -
alert函数是什么? -
@aynber alert 只是将
var_dump包裹在<div class="alert">中。使其更易于阅读。true标志用于切换“var_dump”或“打印”:P -
等等,你怎么知道它正在运行 if 语句?它将返回 false,或者将返回 0 的 id。如果在函数之外仅使用两个等号,则两者都评估为 false。通过在 if 语句中添加另一个警报并在其后添加一个警报来验证它击中的是哪个,例如
alert('inside the if');和alert('did not hit if'); -
谢谢大家,这与此方法无关。这是因为“0”被视为假...
标签: php mysql pointers if-statement types