在动态数据库交互的世界中,遇到问题并不罕见从 MySQL 查询中获取正确的行数。特别是在使用 mysqli_stmt::num_rows 函数时,可能会出现此问题。
开发人员经常遇到 mysqli_stmt::num_rows 的情况尽管执行查询后有结果行,函数仍持续返回 0。这种差异可能会非常令人沮丧,从而妨碍准确的数据检索和处理。
解决问题的关键这个问题在于理解 mysqli_stmt::num_rows 的行为。该函数不会自动统计结果集中的行数;相反,它根据特定条件返回一个值:
要解决此问题,开发人员必须在执行查询之后、尝试使用 mysqli_stmt::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(); // Added this line $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(); }
通过合并 mysqli_stmt::store_result(),MySQL 服务器被指示将结果集存储在客户端内存中,使其可用于后续处理。这确保了 mysqli_stmt::num_rows 可以准确计算存储结果集中的行数,返回正确的值。
理解的重要性使用 mysqli_stmt::num_rows 时的 mysqli_stmt::store_result() 对于开发人员来说至关重要使用 MySQL 数据库。通过显式调用 mysqli_stmt::store_result(),开发人员可以确保获得准确的行计数,从而使他们能够有效且高效地处理数据库数据。
以上是为什么 mysqli_stmt::num_rows 返回 0,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!