Start · Sprachen · PHP · Referenz · db2_fetch_object

db2_fetch_object

Funktion

Liest eine Zeile aus einem IBM DB2-Ergebnisset und gibt sie als <code>stdClass</code>-Objekt zurück, bei dem jede Spalte eine Eigenschaft ist.

seit PHP 5.1.0 Kategorie: db

Signatur

db2_fetch_object(resource $stmt, int $row_number = -1): stdClass|false

Beschreibung

db2_fetch_object() holt die nächste Zeile aus einem Ergebnisset, das durch db2_exec() oder db2_execute() erzeugt wurde, und gibt ein stdClass-Objekt zurück. Jeder Spaltenname des Ergebnissets wird dabei zu einer Eigenschaft (Property) des Objekts, deren Wert den Spaltenwert enthält.

Der Zugriff auf Spaltenwerte erfolgt über die Schreibweise $row->Spaltenname, was gegenüber dem assoziativen Array-Zugriff häufig zu lesbarerem Code führt, insbesondere wenn Objekte in der Applikationslogik bevorzugt werden. Spaltennamen werden in ihrer Originalschreibweise (Groß-/Kleinschreibung wie vom Treiber geliefert) als Eigenschaften übernommen.

Der optionale Parameter $row_number ermöglicht bei scrollbaren Cursorn den direkten Zugriff auf eine bestimmte Zeile (1-basierter Index). Bei vorwärtsgerichteten Cursorn (Standardfall) wird dieser Parameter ignoriert und die nächste Zeile zurückgegeben.

Die Funktion ist Teil der IBM DB2-, Cloudscape- und Apache Derby-Erweiterung für PHP (ibm_db2) und steht nur zur Verfügung, wenn diese Erweiterung installiert und aktiviert ist.

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 Ergebnisset enthält.
$row_number int -1 Bei scrollbaren Cursorn gibt dieser 1-basierte Index die Zeilennummer an, die abgerufen werden soll. Bei einem Wert von -1 oder bei vorwärtsgerichteten Cursorn wird die nächste Zeile im Ergebnisset zurückgegeben.

Rückgabewert

Typ
stdClass|false
Beschreibung
Gibt ein stdClass-Objekt zurück, das für jede Spalte des Ergebnissets eine gleichnamige Eigenschaft mit dem entsprechenden Spaltenwert besitzt. NULL-Werte in der Datenbank werden als PHP-null übergeben. Gibt false zurück, wenn keine weitere Zeile mehr vorhanden ist oder ein Fehler auftritt.

Beispiele

Alle Zeilen einer Abfrage als Objekte ausgeben

<?php
$conn = db2_connect('SAMPLE', 'db2inst1', 'geheimespasswort');

if ($conn) {
    $sql = 'SELECT firstnme, lastname, salary FROM employee ORDER BY lastname';
    $stmt = db2_exec($conn, $sql);

    if ($stmt) {
        while ($row = db2_fetch_object($stmt)) {
            printf(
                "%-15s %-15s %10.2f\n",
                $row->FIRSTNME,
                $row->LASTNAME,
                $row->SALARY
            );
        }
    } else {
        echo 'Fehler beim Ausführen der Abfrage: ' . db2_stmt_errormsg();
    }

    db2_close($conn);
} else {
    echo 'Verbindung fehlgeschlagen: ' . db2_conn_errormsg();
}
Christine Haas 52750.00 Eileen Henderson 29750.00 Eva Pulaski 36170.00

Ergebniszeilen in ein Array von Objekten sammeln

<?php
$conn = db2_connect('SAMPLE', 'db2inst1', 'geheimespasswort');

if ($conn) {
    $sql = 'SELECT deptno, deptname FROM department WHERE admrdept = ?';
    $stmt = db2_prepare($conn, $sql);

    if ($stmt && db2_execute($stmt, ['A00'])) {
        $departments = [];

        while ($row = db2_fetch_object($stmt)) {
            $departments[] = $row;
        }

        foreach ($departments as $dept) {
            echo $dept->DEPTNO . ': ' . $dept->DEPTNAME . PHP_EOL;
        }
    } else {
        echo 'Fehler: ' . db2_stmt_errormsg();
    }

    db2_close($conn);
}
A00: SPIFFY COMPUTER SERVICE DIV. B01: PLANNING C01: INFORMATION CENTER

// Wichtig · Fallstricke

Spaltennamen und Groß-/Kleinschreibung: DB2 liefert Spaltennamen standardmäßig in Großbuchstaben. Der Zugriff auf Eigenschaften des zurückgegebenen Objekts muss daher in der Regel mit Großbuchstaben erfolgen (z. B. $row->LASTNAME), sofern keine Aliase mit gewünschter Schreibweise im SQL definiert wurden.

NULL-Werte: Datenbankfelder mit dem Wert NULL werden als PHP-null zurückgegeben. Vor der Verwendung sollte daher mit isset() oder einem strikten === null-Vergleich geprüft werden.

Erweiterung erforderlich: Die Funktion ist nur verfügbar, wenn die ibm_db2-Erweiterung installiert ist. Ohne diese Erweiterung führt ein Aufruf zu einem fatalen Fehler.