首页 >后端开发 >php教程 >为什么`mysqli_stmt::num_rows`总是返回0?

为什么`mysqli_stmt::num_rows`总是返回0?

Linda Hamilton
Linda Hamilton原创
2024-12-26 06:57:10606浏览

Why Does `mysqli_stmt::num_rows` Always Return 0?

为什么我的 mysqli_stmt::num_rows 总是返回 0?

尝试使用 mysqli_stmt 检索 MySQL 查询返回的行数时::num_rows,尽管实际结果存在,但用户可能会遇到始终返回 0 的情况。要解决这个问题,关键是在 num_rows 之前调用 mysqli_stmt::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
    }

    echo($num_of_rows);

    $stmt->close();
}

如官方所述MySQL 文档 mysqli_stmt::num_rows,“[...] 结果集中的行数可以通过调用num_rows 方法。这必须在调用 store_result 之后完成。”通过包含 mysqli_stmt::store_result() 调用,结果集存储在客户端中,从而可以准确确定行数。

以上是为什么`mysqli_stmt::num_rows`总是返回0?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn