php - 检查结果的替代方法 num_rows >0
问题描述
到目前为止,我正在通过以下方式检查 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);
还是我错了?我将我的网站托管在网络服务器上,因此也可能是因为更新。几天前它工作正常。
解决方案
由于您有多个语法错误,您的代码很可能无法正常工作。我建议阅读如何在 MySQLi 中获取错误消息?
如果你想继续使用 mysqli,那么就不需要这个过于复杂的代码。您可以简单地将所有结果提取到一个数组中。没有必要使用num_rows
.
$value = "cId";
$stmt = $conn->prepare("SELECT name FROM tbl_criteria WHERE ID =?");
$stmt->bind_param('s', $value);
$stmt->execute();
$result = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
// If no rows were fetched the array will be empty and condition will be false
if ($result) {
echo 'Appear if rows >0';
foreach ($result as $row) {
echo 'Appear for each result';
}
}
推荐阅读
- haskell - 如何在 Haskell 中添加列表的最后两个值?
- react-admin - 使用数据调用 useUpdateMany 回调
- bash - Unix导出命令路径
- python - Python - 从数据框中采样行而不进行替换
- sqlite - golang中的sqlite3,foreign_keys pragma不强制执行键
- c# - 尝试使用 json.net 和 WCF Rest Service 将 XML 转换为 JSON 输出时出现反斜杠问题
- php - 如何修复 Wordpress 登录页面上的致命 PHP 错误?
- python - 如何将 3 个 .py 文件转换为 1 个 .exe 文件
- python - zappa 忽略了烧瓶项目日志消息
- php - 浏览器中的 PHPMailer Outlook 视图