Mysql
 sql >> Datenbank >  >> RDS >> Mysql

php do while funktioniert nicht mit next->rowset

Ich hatte das gleiche Problem mit PDO::nextRowset(), da es true zurückgibt, obwohl keine weiteren Rowsets verfügbar sind, daher wird beim Aufrufen von fetchAll() die Ausnahme HY000 ausgelöst. (getestet auf PHP 5.5.12 Windows, MySQL 5.5.17 Linux)

Eine Problemumgehung für dieses Problem besteht darin, die Anzahl der Spalten mit der Methode PDO::columnCount() zu überprüfen, bevor das Rowset abgerufen wird. Wenn es nicht Null ist, haben Sie ein gültiges Rowset und könnten daher PDO::fetchAll().

aufrufen

Selbst wenn PDO::nextRowset() wahr meldet, wird columnCount() die Anzahl der Spalten melden, bevor zum nächsten Rowset übergegangen wird.

Beispiel:

while ($objQuery->columnCount()) {
    $tab[] = $objQuery->fetchAll(\PDO::FETCH_ASSOC);
    $objQuery->nextRowset();
}