Einführung - Ergebnismengen

Einführung - Ergebnismengen -- Daten aus einer Abfrage verarbeiten

Beschreibung

Datensätze aus der Ergebnismenge holen

Das DB_result-Objekt bietet zwei Wege auf die Daten aus einem Datensatz in der Ergebnismenge zuzugreifen: fetchRow() und fetchInto().

fetchRow() liefert einen Datensatz zurück. fetchInto() weist den Datensatz einer Variable zu und liefert DB_OK.

Die Zeiger in der Ergebnismenge wird bei jedem Aufruf auf den nächsten Datensatz gelegt. Es wird NULL zurückgegeben, wenn das Ende der Ergebnismenge erreicht ist.

Ein DB_Error wird zurückgeliefert, wenn ein Fehler auftrat.

Format der zurückgegebenen Datensätze

Die Daten aus einem Datensatz einer Ergebnismenge können auf drei Arten übergeben werden:

DB_FETCHMODE_ORDERED (default)
Array
(
    [0] => 28
    [1] => hi
)

DB_FETCHMODE_ASSOC
Array
(
    [a] => 28
    [b] => hi
)

DB_FETCHMODE_OBJECT
stdClass Object
(
    [a] => 28
    [b] => hi
)

Wenn eine Abfrage den gleichen Spaltennamen mehrmals enthält, z.B. beim Verbinden von Tabellen mit gleichen Spaltennamen, und der Modus zum Holen ist DB_FETCHMODE_ASSOC oder DB_FETCHMODE_OBJECT, dann befindet sich der Schlüsselname bzw. Variable trotzdem nur einmal im Array bzw. Objekt. Damit ist der Datensatz unvollständig. Es gibt zwei Möglichkeiten die Situation aufzulösen:

Wie der Modus gesetzt wird

Der Modus kann bei jedem Aufruf von fetchInto() und fetchRow() gesetzt werden, oder global für jeden Datenbankzugriff mit der setFetchMode()-Methode.

Datensätze über ihre Nummer holen

PEAR::DB unterstützt das gezielte herausholen eines Datensatzes über seine Nummer in der Ergebnismenge. Dazu kann der fetchInto() bzw. bzw. fetchRow()-Methode ein dritter Parameter übergeben werden, der die Nummer enthält. Das ist hilfreich, wenn nur ein Teil der gesamten Ergebnismenge benötigt wird, wie z.B. bei der Aufteilung der Ergebnismenge auf mehrere HTML-Seiten.

Die vollständige Ergebnismenge holen

Das DB_common-Objekt bietet verschiedene Methoden, um eine Abfrage zu vereinfachen, inbesondere bei kleinen Mengen. Diese Methoden erwarten die Abfrage, geben die Ergebnismenge als PHP-Datenstruktur zurück und geben belegten Speicher sofort wieder frei. Die Methoden sind: getOne(), getRow(), getCol(), getAssoc() and getAll().

Ergebnismengen freigeben

Nach der Verarbeitung einer Ergebnismenge sollte diese wieder freigegeben werden, um Arbeitsspeicher freizumachen. Dazu benutzen Sie die Methode free().

Zusatzinformationen über eine Ergebnismenge erhalten

Mit DB haben Sie vier Wege Informationen über eine Ergebnismenge zu erhalten:

numRows() liefert die Anzahl der erhaltenen Datensatze einer SELECT-Abfrage.

numCols() liefert die Anzahl der Spalten in einer Ergebnismenge einer SELECT-Abfrage.

affectedRows() liefert die Anzahl der geänderten Datensätze einer INSERT-, UPDATE- oder DELETE-Abfrage

tableInfo() liefert ein assoziatives Array mit Informationen über die Spalten einer SELECT-Abfrage

Fehlerprüfung

Benutzen Sie isError() um zu prüfen, ob eine Aktion ein DB_Error-Objekt zurückgeliefert hat.