Начиная с версии 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 .