首页 > 后端开发 > php教程 > 为什么使用'prepare”、'bind_param”、'bind_result”和'fetch”后'mysqli_stmt::num_rows”始终返回零?

为什么使用'prepare”、'bind_param”、'bind_result”和'fetch”后'mysqli_stmt::num_rows”始终返回零?

DDD
发布: 2024-12-08 05:43:09
原创
263 人浏览过

Why Does `mysqli_stmt::num_rows` Consistently Return Zero After Using `prepare`, `bind_param`, `bind_result`, and `fetch`?

mysqli num_rows 始终返回零

问题:

使用MySQLi的prepare、bind_param时, num_rows、bind_result 和 fetch 方法来检索来自数据库的行,为什么 num_rows 总是返回 0?

答案:

MySQLi 调用的错误使用。要解决此问题,请在获取行数之前执行以下步骤:

$stmt->execute();
$stmt->store_result();
登录后复制

调用 store_result() 对于 mysqli_stmt::num_rows 正常工作至关重要。

此处是修改后的代码片段,添加了 store_result() 调用:

if ($stmt = $mysqli->prepare("SELECT id, title, visible, parent_id FROM content WHERE parent_id = ? ORDER BY page_order ASC;")) {
    $stmt->bind_param('s', $data->id);
    $stmt->execute();
    $stmt->store_result();
    $num_of_rows = $stmt->num_rows;
    $stmt->bind_result($child_id, $child_title, $child_visible, $child_parent);

    while ($stmt->fetch()) {
        // Code here
    }

    echo($num_of_rows);

    $stmt->close();
}
登录后复制

请参阅有关更多详细信息,请参阅 mysqli_stmt::num_rows 的官方文档。

以上是为什么使用'prepare”、'bind_param”、'bind_result”和'fetch”后'mysqli_stmt::num_rows”始终返回零?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板