Intereting Posts

Множественные запросы 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 .