Tôi đã gặp vấn đề tương tự với PDO ::nextRowset (), vì nó trả về true ngay cả khi không còn tập hợp hàng nào nữa, do đó khi gọi fetchAll (), nó tăng ngoại lệ HY000. (đã thử nghiệm trên các cửa sổ PHP 5.5.12, Mysql 5.5.17 linux)
Một giải pháp cho vấn đề này là kiểm tra số lượng cột bằng phương thức PDO ::columnCount () trước khi tìm nạp tập hợp hàng. Nếu nó khác 0, bạn có một tập hợp hàng hợp lệ và do đó bạn có thể gọi PDO ::fetchAll ().
Ngay cả khi PDO ::nextRowset () báo cáo true, thì columnCount () sẽ báo cáo số cột trước khi chuyển sang tập hàng tiếp theo.
Ví dụ:
while ($objQuery->columnCount()) {
$tab[] = $objQuery->fetchAll(\PDO::FETCH_ASSOC);
$objQuery->nextRowset();
}