PDO多个查询 [英] PDO multiple queries

查看:67
本文介绍了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"
  }
}

解决方案

原来,您需要使用PDOStatement::nextRowset.

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

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

这是一个有点奇怪的实现.如果多查询语句仅将两个结果集都返回到一个数组下,那肯定会更容易.但是,优点是该实现允许使用不同的 FETCH样式来提取每个查询. >

As of PHP version 5.3 PDO_MYSQL driver has been repleaced in favour of PDO_MYSQLND. It introduced support for multiple queries.

Though, I can't figure out how to get both result sets if more than one SELECT query has been passed. Both queries have been executed, it can't be that the second one was just dumped.

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

Returns:

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

解决方案

It turns out that you need to use PDOStatement::nextRowset.

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

This will return result for the second query.

It is a bit odd implementation. It would certainly be easier if multi-query statement would just return both results sets under one array. However, the advantage is that this implementation allows to fetch every query using different FETCH styles.

这篇关于PDO多个查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆