Signatur
Beschreibung
ibase_fetch_object() liest die nächste Zeile aus dem angegebenen InterBase-/Firebird-Abfrageergebnis und gibt sie als stdClass-Objekt zurück. Jede Spalte des Ergebnisses wird dabei als Eigenschaft (Property) des Objekts zugänglich gemacht, wobei der Spaltenname als Eigenschaftsname dient.
Die Funktion ist besonders nützlich, wenn man mit objektorientierten Strukturen arbeitet und auf Spaltenwerte lieber über $row->SPALTENNAME zugreift als über Array-Indizes. Spaltennamen werden dabei in Großbuchstaben konvertiert, sofern nicht anders konfiguriert.
Mit dem optionalen Parameter fetch_flag lässt sich steuern, ob BLOB-Felder automatisch abgerufen werden sollen. Dies geschieht durch Angabe der Konstante IBASE_FETCH_BLOBS. Ohne dieses Flag werden BLOB-Felder nur als Ressource-Bezeichner zurückgegeben und müssen separat mit ibase_blob_get() gelesen werden.
Hinweis: Die ibase_*-Funktionen sind seit PHP 7.4 aus dem PHP-Kern ausgelagert und stehen als PECL-Extension ibase bzw. FirebirdSQL zur Verfügung. In modernen Projekten empfiehlt sich die Verwendung von PDO mit dem Firebird-Treiber.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | resource | Eine gültige InterBase-Ergebnisressource, wie sie von ibase_query() oder ibase_execute() zurückgegeben wird. |
|
| $fetch_flag | int | 0 | Optionales Flag zur Steuerung des Abrufverhaltens. Mögliche Werte sind IBASE_FETCH_BLOBS (BLOBs automatisch einlesen) und IBASE_FETCH_ARRAYS (Arrays einlesen). Mehrere Flags können mit | kombiniert werden. |
Rückgabewert
stdClass-Objekt zurück, dessen Eigenschaften den Spaltennamen (in Großbuchstaben) der aktuellen Zeile entsprechen. Wurden alle Zeilen gelesen oder ist ein Fehler aufgetreten, wird false zurückgegeben.Beispiele
Datensätze als Objekte einlesen und ausgeben
<?php
$dbh = ibase_connect('localhost:/var/lib/firebird/mydb.fdb', 'sysdba', 'masterkey');
$result = ibase_query($dbh, 'SELECT ID, NAME, EMAIL FROM USERS');
while ($row = ibase_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;
}
ibase_free_result($result);
ibase_close($dbh);
BLOB-Felder automatisch einlesen
<?php
$dbh = ibase_connect('localhost:/var/lib/firebird/mydb.fdb', 'sysdba', 'masterkey');
// IBASE_FETCH_BLOBS sorgt dafür, dass BLOB-Felder direkt als String geladen werden
$result = ibase_query($dbh, 'SELECT ID, TITLE, CONTENT FROM ARTICLES');
while ($row = ibase_fetch_object($result, IBASE_FETCH_BLOBS)) {
echo 'Artikel #' . $row->ID . ': ' . $row->TITLE . PHP_EOL;
// CONTENT ist ein BLOB und steht hier direkt als String zur Verfügung
echo substr($row->CONTENT, 0, 100) . '...' . PHP_EOL;
}
ibase_free_result($result);
ibase_close($dbh);
// Wichtig · Fallstricke
Deprecation/Verfügbarkeit: Die ibase_*-Erweiterung wurde in PHP 7.4 aus dem PHP-Kern entfernt und ist nur noch als PECL-Extension verfügbar. Für neue Projekte sollte PDO mit dem Firebird-Treiber (PDO_Firebird) verwendet werden.
Spaltennamen: Eigenschaftsnamen im zurückgegebenen Objekt entsprechen den Spaltennamen in Großbuchstaben. Bei Alias-Namen in SQL-Abfragen (z. B. SELECT NAME AS username) wird ebenfalls der Alias in Großbuchstaben verwendet ($row->USERNAME).
Ressourcenverwaltung: Nicht mehr benötigte Ergebnisressourcen sollten mit ibase_free_result() freigegeben werden, um Speicher zu sparen.