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中文网其他相关文章!