【发布时间】:2020-06-07 20:57:00
【问题描述】:
到目前为止,我通过以下方式检查 num_rows >0:
$sql = "SELECT name FROM tbl_criteria WHERE ID =?";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql)){
header("location: /XX");
}else{
mysqli_stmt_bind_param($stmt, "i", $cId);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
mysqli_fetch_all($result,MYSQLI_ASSOC);
if($result-> num_rows >0{
echo 'Appear if rows >0';
foreach($result as $row){
echo 'Appear for each result';
}
}
}
突然间,这不再起作用了。我总是得到 0 个结果。我已经读过在访问 num_rows 之前调用mysqli_stmt_store_result() 很重要,否则它通常会返回0。我以为我用$result = mysqli_stmt_get_result($stmt); 存储结果还是我错了?
我将我的网站托管在网络服务器上,因此也可能是因为更新。几天前它工作正常。
【问题讨论】:
-
说真的,考虑切换到 PDO
-
您确实应该切换到 PDO,但是如果您想继续使用 mysqli,您应该知道使用
num_rows是一种不好的做法。 -
您的代码有多个语法错误。
-
“几天前它工作正常。” - 不是你发布的内容,这是肯定的。