首页 > 数据库 > mysql教程 > 如何从单个 PDO 查询中检索多个结果集?

如何从单个 PDO 查询中检索多个结果集?

Patricia Arquette
发布: 2024-11-17 12:06:02
原创
935 人浏览过

How to Retrieve Multiple Result Sets from a Single PDO Query?

PDO 多个查询:检索多个结果集

PHP 5.3 在 PDO_MYSQLND 驱动程序中引入了对多个查询的支持,允许您执行多个 SELECT一次调用中的查询。但是,从这些查询中检索结果集可能会令人困惑。

考虑以下查询:

$db->query("SELECT 1; SELECT 2;")
登录后复制

此查询执行两个 SELECT 查询。然后使用 fetchAll(PDO::FETCH_ASSOC) 方法检索结果集。但是,这仅返回第一个查询的结果:

array(1) {
  [0] =>
  array(1) {
    [1] =>
    string(1) "1"
  }
}
登录后复制

使用 PDOStatement::nextRowset

要检索第二个查询的结果,您需要使用 PDOStatement::nextRowset 方法。此方法允许您将语句光标移动到下一个结果集:

$stmt = $db->query("SELECT 1; SELECT 2;");
$stmt->nextRowset();
var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
登录后复制

这将返回第二个查询的结果:

array(1) {
  [0] =>
  array(1) {
    [2] =>
    string(1) "2"
  }
}
登录后复制

多种 FETCH 样式

使用 PDOStatement::nextRowset 的优点是它允许您获取每个查询使用不同的 FETCH 风格。例如:

$stmt = $db->query("SELECT 1; SELECT 'a';");
$stmt->nextRowset();
$first = $stmt->fetchColumn(); // fetch first column of second query
$stmt->nextRowset();
$second = $stmt->fetch(PDO::FETCH_ASSOC); // fetch associative array of third query
登录后复制

这为您在处理多个查询时提供了更大的灵活性。

以上是如何从单个 PDO 查询中检索多个结果集?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板