mysqli_stmt::next_result
(mysqli_stmt_next_result)从多个查询中读取下一个结果
PHP 5.3.0及以上版本
mysqli_stmt::next_result 用于检索在多个结果集存在时的下一个结果集。在执行带有多个结果集的SQL查询时,尤其是在存储过程调用中,调用此方法可以移动到下一个结果集。
public mysqli_stmt::next_result ( void ) : bool
此函数不需要任何参数。
如果下一个结果集存在并成功地被检索,返回 true。如果没有更多结果集,或者检索下一个结果集失败,返回 false。
以下是一个基本的示例,展示了如何使用 mysqli_stmt::next_result 来处理多个结果集。
在这个示例中,我们执行一个包含多个结果集的 SQL 查询,并使用 next_result 来获取每一个结果集。
<?php
// 创建数据库连接
$mysqli = new mysqli("localhost", "username", "password", "database");
// 检查连接
if ($mysqli->connect_error) {
die("连接失败: " . $mysqli->connect_error);
}
// 创建准备语句
$stmt = $mysqli->prepare("CALL your_stored_procedure()");
// 执行语句
$stmt->execute();
// 获取第一个结果集
do {
$result = $stmt->get_result();
if ($result) {
while ($row = $result->fetch_assoc()) {
echo "Result: " . $row['column_name'] . "<br>";
}
}
} while ($stmt->next_result()); // 移动到下一个结果集
// 关闭语句和连接
$stmt->close();
$mysqli->close();
?>
上述代码展示了如何在执行存储过程后,逐一获取所有的结果集。每次调用 next_result 方法时,都会尝试加载下一个结果集,直到没有更多结果集为止。