Hóa ra là bạn cần sử dụng PDOStatement::nextRowset
.
$stmt = $db->query("SELECT 1; SELECT 2;");
$stmt->nextRowset();
var_dump( $stmt->fetchAll(PDO::FETCH_ASSOC) );
Điều này sẽ trả về kết quả cho truy vấn thứ hai.
Đó là một cách thực hiện hơi kỳ quặc. Chắc chắn sẽ dễ dàng hơn nếu câu lệnh đa truy vấn chỉ trả về cả hai tập kết quả trong một mảng. Tuy nhiên, ưu điểm là việc triển khai này cho phép tìm nạp mọi truy vấn bằng cách sử dụng các kiểu FETCH khác nhau .