Mysql
 sql >> Database >  >> RDS >> Mysql

php do while non funzionerà con next->rowset

Ho avuto lo stesso problema con PDO::nextRowset(), poiché restituisce true anche se non ci sono più set di righe disponibili, quindi quando si chiama fetchAll(), solleva l'eccezione HY000. (testato su PHP 5.5.12 windows, Mysql 5.5.17 linux)

Una soluzione per questo problema consiste nel controllare il numero di colonne con il metodo PDO::columnCount() prima di recuperare il set di righe. Se è diverso da zero, hai un set di righe valido e quindi puoi chiamare PDO::fetchAll().

Anche se PDO::nextRowset() riporta true, columnCount() riporterà il numero di colonne prima di passare al set di righe successivo.

Esempio:

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