首页 > 解决方案 > 准备好的语句总是在 if 上返回 0

问题描述

我正在尝试从 SQL 中获取计数:

function sqlCheckUserExists() 
{
    $sql = "SELECT COUNT(*) FROM users WHERE email = ? LIMIT 1;";
    $stmt = $conn->prepare($sql);
    
    $stmt->bind_param("s", $email);
    $stmt->execute();   
    $stmt->store_result();  
    $stmt->bind_result($count);
    if($count === 1 OR $count > 0)
        {
            return true;
        } 
        elseif($count === 0) 
        {
            return false;
        }
    $stmt->close(); 
}

并调用它:

if (sqlCheckUserExists) {
        echo json_encode(array("statusCode"=>201));
    } else {
        echo json_encode(array("statusCode"=>202));
}

查询很好。我只想知道邮件是否已经在表中。

作为回应,我总是得到“statusCode:201”=“0”或“false”。

标签: phpmysqli

解决方案


你错过了 fetch()

$stmt->fetch();

还有 $conn

function sqlCheckUserExists($conn) 
{
    $sql = "SELECT COUNT(*) FROM users WHERE email = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("s", $email);
    $stmt->execute();   
    $stmt->store_result();  
    $stmt->bind_result($count);
    $stmt->fetch();
    $stmt->close();  // close it before return
    return $count > 0; // returns true if count is more than zero else false
 
}

if (sqlCheckUserExists($conn)) {

}

推荐阅读