我在我的函数中使用PDO,但我在代码中有问题,我希望函数应该返回boolean
结果,但当我输入错误的电子邮件时,它也给我true。
我的代码有什么问题?
function user_exists($email, $conn)
{
$query = "SELECT COUNT(`UserId`) FROM users WHERE `Email` = :email";
$stmt = $conn->prepare($query);
$stmt->bindParam(':email', $email);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$result = $stmt->execute();
return ($result == 1) ? true : false;
}
你正在执行查询,但没有读取查询的结果,而不是读取查询是否正确执行,在你的情况下总是正确的。
试试这个:
function user_exists($email, $conn)
{
$query = "SELECT COUNT(`UserId`) FROM users WHERE `Email` = :email";
$stmt = $conn->prepare($query);
$stmt->bindParam(':email', $email);
$stmt->execute();
return $stmt->fetchColumn() > 0 ? true : false;
}
fetchColumn
将给出计数列的结果,如果执行失败或计数为0,则返回false。