Mysql
 sql >> база данни >  >> RDS >> Mysql

php do while няма да работи със next->rowset

Имах същия проблем с 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();
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL + Изберете 2 колони - 1 е уникална

  2. Какъв е стандартният начин за получаване на последния идентификатор на вмъкване?

  3. Свържете се с много бази данни едновременно в Laravel 5.2

  4. Как да отпечатам всички заявки в Magento?

  5. Поправете „ГРЕШКА 1136 (21S01):Броят на колоните не съвпада с броя на стойностите на ред 1“ при вмъкване на данни в MySQL