创建一个返回布尔结果的函数


Creating a function to return boolean result?

我在我的函数中使用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。