使用mysql预处理语句测试表中行是否存在


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

我编写了下面的方法来测试mysql数据库中是否存在用户名为$uname的用户。不幸的是,它不返回任何行,即使在用户明确存在的情况下也是如此。我猜想有什么复杂的地方,因为这是一个准备好的语句,但我不确定是怎么回事/

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();