Start · Sprachen · PHP · Referenz · ibase_fetch_object

ibase_fetch_object

Funktion

Liest den nächsten Datensatz aus einem InterBase-Abfrageergebnis und gibt ihn als PHP-Objekt zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

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

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

Typ
object|false
Beschreibung
Gibt ein 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);
ID: 1 Name: Max Mustermann E-Mail: max@example.com --- ID: 2 Name: Erika Musterfrau E-Mail: erika@example.com ---

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);
Artikel #1: Einführung in Firebird Firebird ist ein relationales Datenbankmanagementsystem, das aus dem InterBase-Quellcode hervor... Artikel #2: PHP und Firebird Die Kombination aus PHP und Firebird bietet eine leistungsfähige Basis für Webanwendungen...

// 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.