首页  >  文章  >  后端开发  >  如何在 PHP 中使用 MySQLi 从存储过程中检索多个结果集?

如何在 PHP 中使用 MySQLi 从存储过程中检索多个结果集?

Barbara Streisand
Barbara Streisand原创
2024-11-01 08:58:02709浏览

How do I retrieve multiple result sets from a stored procedure using MySQLi in PHP?

使用 MySQLi 从存储过程中检索多个结果集

您的存储过程“multiples”会生成多个结果集。要前进到后续结果集并从中检索数据,请使用 MySQLi 扩展执行以下步骤:

PHP 过程样式:

<code class="php">// Prepare the statement
$stmt = mysqli_prepare($db, 'CALL multiples(?, ?)');

// Bind parameters
mysqli_stmt_bind_param($stmt, 'ii', $param1, $param2);

// Execute the statement
mysqli_stmt_execute($stmt);

// Fetch the first result set
$result1 = mysqli_stmt_get_result($stmt);
while ($row1 = $result1->fetch_assoc()) {
  echo "Result 1: " . $row1['id'] . "\n";
}

// Advance to the second result set
mysqli_stmt_next_result($stmt);
$result2 = mysqli_stmt_get_result($stmt);

// Fetch and print the second result set
while ($row2 = $result2->fetch_assoc()) {
  echo "Result 2: " . $row2['id'] . "\n";
}

// Close the statement
mysqli_stmt_close($stmt);</code>

PHP 对象-定向样式:

<code class="php">// Create a prepared statement object
$stmt = $db->prepare('CALL multiples(?, ?)');

// Bind parameters
$stmt->bind_param('ii', $param1, $param2);

// Execute the statement
$stmt->execute();

// Fetch the first result set
$result1 = $stmt->get_result();
while ($row1 = $result1->fetch_assoc()) {
  echo "Result 1: " . $row1['id'] . "\n";
}

// Advance to the second result set
$stmt->next_result();

// Store and print results from the second result set
$result2 = $stmt->get_result();
while ($row2 = $result2->fetch_assoc()) {
  echo "Result 2: " . $row2['id'] . "\n";
}

// Close the statement
$stmt->close();</code>

附加说明:

  • 前进到下一个结果集后,必须先获取并处理它,然后才能继续到下一个。
  • 如果您的存储过程生成作为空字符串返回的整数,请检查数据库表中的列类型。
  • 考虑在 MySQLi 中使用面向对象的样式以实现更清洁以及更多封装的代码结构。

以上是如何在 PHP 中使用 MySQLi 从存储过程中检索多个结果集?的详细内容。更多信息请关注PHP中文网其他相关文章!

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