问题描述
自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多个查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!