我测试我的php文件时遇到此错误:mysqli_num_rows() expects parameter 1 to be mysqli_result
这是我的PHP代码:
<?php
require "init.php";
if(isset($_POST['username'])){
$username = $_POST['username'];
$stmt = "SELECT username FROM users WHERE username = ?";
$result = $dbcon -> prepare($stmt);
$result->bind_param('s', $username);
$result->execute();
$result->bind_result($username);
$result->fetch();
if(mysqli_num_rows($result)==0){
echo "Result found";
}
else{
echo "NO";
}
}
?>
如果我错了,请纠正我,但我相信我们需要这样的陈述来阻止SQL注入。
答案 0 :(得分:0)
检查准备的结果:
$result = $dbcon -> prepare($stmt) or die ($dbcon->error());
请注意,如果不调用 store_result ,行数通常为零,但在您的情况下,您只需检查 fetch 调用的返回值,请使用if
if ($result->fetch()) {
echo "Result found";
} else {
echo "NO";
}
...并放弃使用 num_rows 。
这与您的问题无关,但是一旦您不再需要准备好的语句,最好添加 close :
$result->close();