问题描述
自 PHP 5.3 版起,PDO_MYSQL
驱动程序已被替换为 PDO_MYSQLND
.它引入了对多个查询的支持.
不过,如果通过了多个 SELECT
查询,我无法弄清楚如何获得两个结果集.两个查询都执行了,不可能是第二个刚刚dump了.
$db->query("SELECT 1; SELECT 2;")-> fetchAll(PDO::FETCH_ASSOC);
返回:
array(1) {[0]=>数组(1){[1]=>字符串(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 多重查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!