Signatur
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
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);
?>
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);
?>
// 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.