Consultas múltiples de PDO

A partir de la versión 5.3 de PDO_MYSQL controlador PDO_MYSQL ha sido reposicionado a favor de PDO_MYSQLND . Introdujo soporte para múltiples consultas.

Sin embargo, no puedo encontrar la forma de obtener ambos conjuntos de resultados si se ha pasado más de una consulta SELECT . Ambas consultas se han ejecutado, no puede ser que la segunda haya sido abandonada.

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

Devoluciones:

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

Resulta que necesitas usar PDOStatement::nextRowset .

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

Esto devolverá el resultado para la segunda consulta.

Es una implementación un poco extraña. Sin duda sería más fácil si la instrucción de múltiples consultas devolviera ambos conjuntos de resultados en una matriz. Sin embargo, la ventaja es que esta implementación permite buscar cada consulta utilizando diferentes estilos FETCH .