为什么我的 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中文网其他相关文章!