从 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 styles 获取每个查询。 .
关于php - PDO 多重查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11271595/