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

Barbara Streisand
发布: 2024-11-01 08:58:02
原创
707 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!