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 de la segunda consulta.
Es una implementación un poco extraña. Sin duda, sería más fácil si la declaración de consulta múltiple solo devolviera ambos conjuntos de resultados en una matriz. Sin embargo, la ventaja es que esta implementación permite obtener cada consulta utilizando diferentes estilos FETCH .