Um eine Zeile aus dem Ergebnisdatensatz abzurufen, verwenden Sie die fetch()-Methode des Statement-Objekts. Referenz
$sql = 'SELECT blah blah FROM table';
$stmt = $db->query($sql);
while ($row = $stmt->fetch()) {
// Verarbeiten von $row
}
In obigem Beispiel hat $stmt = $db->query($sql);
den Ergebnisdatensatz
im Speicher abgerufen und fetch
wird verwendet, um die aktuelle Zeile in der Schleife aus dem Ergebnisdatensatz
abzurufen, was den Cursor zur nächsten Zeile verschiebt, bis die letzte Zeile im Ergebnisdatensatz
erreicht ist.
Um alle Zeilen des Ergebnisdatensatzes in einem Schritt abzurufen, verwenden Sie die fetchAll()-Methode. Dies entspricht dem Aufruf der fetch()-Methode in einer Schleife und gibt alle Zeilen in einem Array zurück.
$sql = 'SELECT blah blah FROM table';
$stmt = $db->query($sql);
$rows = $stmt->fetchAll();
echo $rows[0]['col1']; // Das erste Feld aus der ersten Zeile
Alternativ können Sie verwenden
....
$table = new Mytable();
// Suchen einer einzelnen Zeile Gibt einen Rowset zurück
$rows = $table->find(1234);
// Suchen mehrerer Zeilen Gibt ebenfalls einen Rowset zurück
$rows = $table->find(array(1234, 5678));
Referenz: Zend_Db_Table..
Für mehr: Abrufen einer Zeile..
Ich denke, dass fetchAll()
schneller ist, weil es alle Daten in einem Schritt abruft und ein Array zurückgibt, aber mehr Speicher verbraucht, während fetch()
weniger Speicher verbraucht, aber die Daten einzeln abruft.
Die API für Abrufvorgänge wurde überarbeitet, um einem Zend_Db_Table_Select-Objekt zu ermöglichen, die Abfrage zu modifizieren. Die veraltete Verwendung der fetchRow()- und fetchAll()-Methoden wird jedoch weiterhin ohne Änderungen funktionieren.
Mehr Referenz: Hier.