Start · Sprachen · PHP · Referenz · fbird_fetch_object

fbird_fetch_object

Funktion

Holt die nächste Zeile aus einem Firebird/InterBase-Abfrageergebnis und gibt sie als Objekt zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

fbird_fetch_object(resource $result, int $fetch_flag = 0): object|false

Beschreibung

fbird_fetch_object() liest die nächste Zeile eines zuvor ausgeführten Firebird- oder InterBase-Abfrageergebnisses und liefert sie als stdClass-Objekt zurück. Dabei entspricht jede Spalte des Ergebnisses einer Eigenschaft (Property) des Objekts, wobei der Eigenschaftsname dem Spaltennamen in Großbuchstaben entspricht.

Die Funktion ist ein Alias für ibase_fetch_object() und gehört zur Firebird/InterBase-Erweiterung. Sie eignet sich besonders, wenn man die abgerufenen Daten objektorientiert weiterverarbeiten möchte, anstatt mit numerisch oder assoziativ indizierten Arrays zu arbeiten.

Mit dem optionalen Parameter fetch_flag lässt sich steuern, ob BLOB-Felder automatisch inline abgerufen werden sollen (IBASE_FETCH_BLOBS) oder ob Arrays vollständig ausgelesen werden sollen (IBASE_FETCH_ARRAYS). Diese Konstanten können per bitweisem ODER kombiniert werden.

Die Funktion wird wiederholt in einer Schleife aufgerufen, bis sie false zurückgibt, was das Ende des Ergebnisses signalisiert. Nach Abschluss der Verarbeitung sollte das Ergebnis mit fbird_free_result() freigegeben werden.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Ein gültiges Ergebnis-Handle, das von fbird_query() oder fbird_execute() zurückgegeben wurde.
$fetch_flag int 0 Optionale Flags, die das Abrufverhalten steuern. Mögliche Werte sind IBASE_FETCH_BLOBS (BLOBs inline abrufen) und IBASE_FETCH_ARRAYS (Arrays vollständig laden). Mehrere Flags können mit dem bitweisen ODER-Operator (|) kombiniert werden.

Rückgabewert

Typ
object|false
Beschreibung
Gibt ein stdClass-Objekt zurück, dessen Eigenschaften den Spalten der aktuellen Zeile entsprechen (Eigenschaftsname = Spaltenname in Großbuchstaben). Gibt false zurück, wenn keine weiteren Zeilen vorhanden sind oder ein Fehler aufgetreten ist.

Beispiele

Alle Zeilen einer Tabelle als Objekte abrufen

<?php
$dbh = fbird_connect('localhost:/path/to/database.fdb', 'SYSDBA', 'masterkey');

$result = fbird_query($dbh, 'SELECT ID, NAME, EMAIL FROM USERS');

while ($row = fbird_fetch_object($result)) {
    echo 'ID: ' . $row->ID . PHP_EOL;
    echo 'Name: ' . $row->NAME . PHP_EOL;
    echo 'E-Mail: ' . $row->EMAIL . PHP_EOL;
    echo '---' . PHP_EOL;
}

fbird_free_result($result);
fbird_close($dbh);
?>
ID: 1 Name: Max Mustermann E-Mail: max@example.com --- ID: 2 Name: Erika Musterfrau E-Mail: erika@example.com ---

BLOB-Felder inline mit IBASE_FETCH_BLOBS abrufen

<?php
$dbh = fbird_connect('localhost:/path/to/database.fdb', 'SYSDBA', 'masterkey');

$result = fbird_query($dbh, 'SELECT ID, TITLE, CONTENT FROM ARTICLES WHERE ID = 1');

// IBASE_FETCH_BLOBS bewirkt, dass BLOB-Spalten direkt als String geladen werden
$row = fbird_fetch_object($result, IBASE_FETCH_BLOBS);

if ($row !== false) {
    echo 'Titel: ' . $row->TITLE . PHP_EOL;
    echo 'Inhalt: ' . $row->CONTENT . PHP_EOL;
}

fbird_free_result($result);
fbird_close($dbh);
?>
Titel: Willkommen Inhalt: Dies ist der vollständige BLOB-Inhalt des Artikels.

// Wichtig · Fallstricke

Deprecation-Hinweis: Die fbird_*-Funktionen sind Aliase der ibase_*-Funktionen. Die gesamte ibase-Erweiterung wurde in PHP 8.0 aus dem PHP-Kern entfernt und ist seitdem nur noch über die externe PECL-Erweiterung ibase verfügbar. Für neue Projekte sollte eine moderne Datenbankabstraktion wie PDO in Verbindung mit einem geeigneten Firebird-Treiber verwendet werden.

Spaltennamen im Ergebnisobjekt werden grundsätzlich in Großbuchstaben dargestellt, unabhängig von der originalen Schreibweise in der SQL-Abfrage. Dies muss bei der Eigenschaftszugriff zwingend beachtet werden.

Werden BLOB-Felder ohne das Flag IBASE_FETCH_BLOBS abgerufen, enthält die entsprechende Eigenschaft lediglich eine BLOB-ID (Handle), mit der der Inhalt separat über fbird_blob_get() gelesen werden muss.