Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

php do while não funcionará com next->rowset


Eu tive o mesmo problema com PDO::nextRowset(), pois ele retorna true mesmo que não haja mais conjuntos de linhas disponíveis, portanto, ao chamar fetchAll(), ele gera a exceção HY000. (testado em PHP 5.5.12 windows, Mysql 5.5.17 linux)

Uma solução para esse problema é verificar o número de colunas com o método PDO::columnCount() antes de buscar o conjunto de linhas. Se for diferente de zero, você tem um conjunto de linhas válido e, portanto, pode chamar PDO::fetchAll().

Mesmo que PDO::nextRowset() reporte true, columnCount() reportará o número de colunas antes de passar para o próximo conjunto de linhas.

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