使用 mysqli 准备语句测试 table 中是否存在一行

testing for existance of a row in a table using mysqli prepared statement

我编写了以下方法来测试 mysql 数据库中是否存在用户名为 $uname 的用户。不幸的是,它 returns 没有行,即使在用户肯定存在的情况下也是如此。我假设有一个并发症,因为它是一个准备好的陈述,但我不确定如何/

public function isUserExists($uname)
 {
    $b = false;
    $sql = "SELECT * FROM `User` WHERE `username` = ?";
    $stmt = $this->conn->prepare($sql);
    $stmt->bind_param('s',$uname);
    $result = $stmt->execute();
echo "num rows:  ".$stmt->num_rows;
    if($stmt->num_rows >= 1)
    {
        echo "user already exists"."<br />";
        $b = true;
    }
    return $b; 
 }

您必须在执行查询后检索结果才能使用结果。在 execute 之后但在使用 num_rows.

之前添加 $stmt->store_result();