php - PDO 多重查询

标签 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"
  }
}

最佳答案

原来你需要使用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/

相关文章:

php - 用于对重复项进行分组和计数的 SQL 语句

php - PHP 5.4.11 上 PDO::execute(array()) 的内部服务器错误

php - Mysql - 使用 select 和 PDO 进行条件插入查询

php - 我无法访问 http ://localhost/phpmyadmin/

php - 为什么我只得到 1 行 ans?

sql - 我应该在多个表中包含 user_id 吗?

python - sqlalchemy,说小数没有定义?

php - Vagrant 虚拟主机/共享文件夹无法访问

php - MySQL获取一组中每x分钟的列的平均值和总和

php - 扩展 PDO 准备方法以替换查询前缀