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

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

Patricia Arquette
Patricia Arquette原创
2024-11-17 12:06:02887浏览

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

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