sql >> Database >  >> RDS >> Mysql

PDOStatement::nextRowSet() is verbroken in MySQL 5.6.16 op Windows

Ik had hetzelfde probleem met PDO::nextRowset(), omdat het true retourneert, zelfs als er geen rijensets meer beschikbaar zijn, daarom roept het bij het aanroepen van fetchAll() de uitzondering HY000 op. (getest op PHP 5.5.12 windows, Mysql 5.5.17 linux)

Een tijdelijke oplossing voor dit probleem is om het aantal kolommen te controleren met de methode PDO::columnCount() voordat u rijenset ophaalt. Als het niet-nul is, hebt u een geldige rijenset en kunt u dus PDO::fetchAll() aanroepen.

Zelfs als PDO::nextRowset() true rapporteert, zal columnCount() het aantal kolommen rapporteren voordat het naar de volgende rijenset gaat.

Voorbeeld:

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


  1. org.hibernate.type.TextType en Oracle

  2. Extraheer het jaar van een datum in PostgreSQL

  3. Verwijder alle rijen behalve de eerste N uit een tabel met een enkele kolom

  4. Converteer maandnaam naar maandnummer in PostgreSQL