Signatur
Beschreibung
db2_fetch_array() liest eine Zeile aus einem IBM-DB2-Abfrageergebnis und gibt diese als numerisch indiziertes Array zurück. Der erste Spaltenindex ist 0, der zweite 1 usw. Die Funktion eignet sich besonders dann, wenn die genauen Spaltennamen unwichtig sind oder wenn Spaltenpositionen explizit ausgewertet werden sollen.
Im Gegensatz zu db2_fetch_assoc(), das assoziative Schlüssel (Spaltennamen) verwendet, oder db2_fetch_both(), das beide Formen kombiniert, liefert db2_fetch_array() ausschließlich numerische Schlüssel. Dies spart etwas Speicher, wenn Spaltenname-Zugriff nicht benötigt wird.
Der optionale Parameter row_number ermöglicht bei scrollbaren Cursorn den direkten Zugriff auf eine bestimmte Zeile (1-basiert). Bei standardmäßigen Forward-Only-Cursorn hat dieser Parameter keine Wirkung und sollte weggelassen oder auf -1 belassen werden.
Die Funktion gibt false zurück, wenn keine weitere Zeile verfügbar ist oder ein Fehler aufgetreten ist, was eine einfache Verwendung in while-Schleifen ermöglicht.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $stmt Pflicht | resource | Eine gültige Statement-Ressource, die von db2_exec() oder db2_execute() zurückgegeben wurde und ein aktives Abfrageergebnis enthält. |
|
| $row_number | int | -1 | Bei scrollbaren Cursorn die 1-basierte Zeilennummer, die abgerufen werden soll. Wird -1 übergeben oder der Parameter weggelassen, wird die nächste verfügbare Zeile zurückgegeben. |
Rückgabewert
0 für die erste Spalte). Gibt false zurück, wenn keine weitere Zeile vorhanden ist oder ein Fehler aufgetreten ist.Beispiele
Alle Zeilen einer Abfrage mit db2_fetch_array() ausgeben
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'geheim');
if ($conn) {
$sql = 'SELECT id, vorname, nachname FROM mitarbeiter ORDER BY id';
$stmt = db2_exec($conn, $sql);
if ($stmt) {
while ($row = db2_fetch_array($stmt)) {
// Spalten werden über numerische Indizes angesprochen
echo 'ID: ' . $row[0] . ', Name: ' . $row[1] . ' ' . $row[2] . PHP_EOL;
}
} else {
echo 'Fehler beim Ausführen der Abfrage: ' . db2_stmt_errormsg();
}
db2_close($conn);
} else {
echo 'Verbindung fehlgeschlagen: ' . db2_conn_errormsg();
}
?>
Bestimmte Zeile mit scrollbarem Cursor abrufen
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'geheim');
if ($conn) {
$sql = 'SELECT id, abteilung, gehalt FROM mitarbeiter ORDER BY id';
// Scrollbaren Cursor aktivieren
$options = ['cursor' => DB2_SCROLLABLE];
$stmt = db2_exec($conn, $sql, $options);
if ($stmt) {
// Direkt die dritte Zeile abrufen (1-basierter Index)
$row = db2_fetch_array($stmt, 3);
if ($row !== false) {
echo 'Dritter Mitarbeiter — ID: ' . $row[0]
. ', Abteilung: ' . $row[1]
. ', Gehalt: ' . number_format($row[2], 2, ',', '.') . ' EUR' . PHP_EOL;
} else {
echo 'Zeile nicht gefunden.';
}
}
db2_close($conn);
}
?>
// Wichtig · Fallstricke
Voraussetzung: Die IBM-DB2-Erweiterung (ibm_db2) muss installiert und aktiviert sein. Diese ist standardmäßig nicht in PHP enthalten und muss separat über PECL installiert werden.
Spaltenindizes: Die Indizes beginnen bei 0. Bei SELECT * hängt die Reihenfolge von der Tabellendefinition ab, was die Wartbarkeit erschwert. Es wird empfohlen, Spalten explizit in der SELECT-Klausel zu benennen.
NULL-Werte: Datenbankspalten mit NULL-Wert werden als PHP-null im Array abgelegt.
Scrollbare Cursor: Der Parameter row_number ist nur wirksam, wenn das Statement mit der Option DB2_SCROLLABLE ausgeführt wurde. Andernfalls hat er keine Wirkung und erzeugt möglicherweise einen Fehler.