PDO ::nextRowset()でも同じ問題が発生しました。使用可能な行セットがなくなってもtrueが返されるため、fetchAll()を呼び出すと、例外HY000が発生します。 (PHP 5.5.12 Windows、Mysql 5.5.17 linuxでテスト済み)
この問題の回避策は、行セットをフェッチする前に、メソッドPDO ::columnCount()を使用して列の数を確認することです。ゼロ以外の場合は、有効な行セットがあるため、PDO ::fetchAll()を呼び出すことができます。
PDO ::nextRowset()がtrueを報告した場合でも、columnCount()は次の行セットに移動する前に列数を報告します。
例:
while ($objQuery->columnCount()) {
$tab[] = $objQuery->fetchAll(\PDO::FETCH_ASSOC);
$objQuery->nextRowset();
}