sql >> Databasteknik >  >> RDS >> Mysql

php do while fungerar inte med nästa->raduppsättning

Jag hade samma problem med PDO::nextRowset(), eftersom det returnerar sant även om det inte finns några fler raduppsättningar tillgängliga, därför när man anropar fetchAll(), höjer det undantag HY000. (testad på PHP 5.5.12 Windows, Mysql 5.5.17 linux)

En lösning för det här problemet är att kontrollera antalet kolumner med metoden PDO::columnCount() innan du hämtar raduppsättningen. Om den inte är noll har du en giltig raduppsättning, och därför kan du anropa PDO::fetchAll().

Även om PDO::nextRowset() rapporterar sant, kommer columnCount() att rapportera antalet kolumner innan den går till nästa raduppsättning.

Exempel:

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


  1. Hur kombinerar man flera kolumner som en och formaterar med anpassade strängar?

  2. Mysql-kommandot hittades inte i OS X 10.7

  3. Left Outer Join returnerar inte alla poster från den primära tabellen

  4. Hur konfigurerar jag allocationSize inom persistence.xml istället för Entity