sql >> Base de Datos >  >> RDS >> Mysql

php do while no funcionará con next->rowset

Tuve el mismo problema con PDO::nextRowset(), ya que devuelve verdadero incluso si no hay más conjuntos de filas disponibles, por lo tanto, al llamar a fetchAll(), genera la excepción HY000. (probado en PHP 5.5.12 windows, Mysql 5.5.17 linux)

Una solución para este problema es verificar el número de columnas con el método PDO::columnCount() antes de obtener el conjunto de filas. Si no es cero, tiene un conjunto de filas válido y, por lo tanto, podría llamar a PDO::fetchAll().

Incluso si PDO::nextRowset() informa verdadero, columnCount() informará el número de columnas antes de pasar al siguiente conjunto de filas.

Ejemplo:

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