PDO多个查询

时间:2012-06-30 05:06:30

标签: php mysql pdo

从PHP版本5.3 PDO_MYSQL开始,驱动程序已被支持PDO_MYSQLND。它引入了对多个查询的支持。

但是,如果传递了多个SELECT查询,我无法弄清楚如何获取两个结果集。两个查询都已执行,不能只是第二个被抛弃。

$db->query("SELECT 1; SELECT 2;")->fetchAll(PDO::FETCH_ASSOC);

返回:

array(1) {
  [0]=>
  array(1) {
    [1]=>
    string(1) "1"
  }
}

1 个答案:

答案 0 :(得分:21)

事实证明,您需要使用PDOStatement::nextRowset

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

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

这有点奇怪的实现。如果多查询语句只返回一个数组下的两个结果集,那肯定会更容易。但是,优点是此实现允许使用不同的FETCH styles来获取每个查询。