Start · Sprachen · PHP · Referenz · ibase_fetch_assoc

ibase_fetch_assoc

Funktion

Ruft die nächste Ergebniszeile einer Firebird/InterBase-Abfrage als assoziatives Array ab, wobei Spaltennamen als Schlüssel verwendet werden.

seit PHP 5.0.0 Kategorie: db

Signatur

ibase_fetch_assoc(resource $result, int $fetch_flag = 0): array|false

Beschreibung

ibase_fetch_assoc() liest die nächste Zeile aus einem Abfrageergebnis einer Firebird- oder InterBase-Datenbank und gibt sie als assoziatives Array zurück. Die Schlüssel des Arrays entsprechen den Spaltennamen der Abfrage (in Großbuchstaben), die Werte den Zellinhalten der jeweiligen Zeile.

Die Funktion ist besonders nützlich, wenn auf Spalten per Name statt per numerischem Index zugegriffen werden soll, was den Code lesbarer und wartbarer macht. Sie verhält sich analog zu ibase_fetch_row(), liefert jedoch ein assoziatives statt eines indizierten Arrays.

Mit dem optionalen Parameter fetch_flag kann das Verhalten gesteuert werden. Durch Übergabe von IBASE_TEXT werden BLOB-Inhalte direkt als Text abgerufen statt als BLOB-ID. Mit IBASE_UNIXTIME werden Datums- und Zeitfelder als Unix-Timestamp zurückgegeben statt als formatierte Zeichenkette.

Hinweis: Die ibase_*-Funktionen wurden mit PHP 8.0 aus dem PHP-Kern entfernt. Sie stehen seitdem nur noch über die PECL-Erweiterung ibase bzw. das Paket FirebirdSQL/php-firebird zur Verfügung.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Eine gültige Ergebnis-Ressource, die zuvor von ibase_query() oder ibase_execute() zurückgegeben wurde.
$fetch_flag int 0 Optionales Bitmask-Flag zur Steuerung des Abrufverhaltens. Mögliche Werte: IBASE_TEXT (BLOB-Felder als Text lesen) und IBASE_UNIXTIME (Datums-/Zeitfelder als Unix-Timestamp zurückgeben). Mehrere Flags können mit | kombiniert werden.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array zurück, dessen Schlüssel die Spaltennamen (in Großbuchstaben) und dessen Werte die Zellinhalte der aktuellen Zeile sind. Gibt false zurück, wenn keine weiteren Zeilen vorhanden sind oder ein Fehler aufgetreten ist.

Beispiele

Alle Zeilen einer Abfrage iterieren

<?php
$dbh = ibase_connect('localhost:employees.fdb', 'sysdba', 'masterkey');

$result = ibase_query($dbh, 'SELECT id, name, department FROM employees ORDER BY name');

while ($row = ibase_fetch_assoc($result)) {
    echo 'ID: ' . $row['ID'] . ', Name: ' . $row['NAME'] . ', Abteilung: ' . $row['DEPARTMENT'] . PHP_EOL;
}

ibase_free_result($result);
ibase_close($dbh);
?>
ID: 1, Name: Anna Müller, Abteilung: Entwicklung ID: 2, Name: Bernd Schmidt, Abteilung: Vertrieb ...

BLOB-Felder direkt als Text abrufen

<?php
$dbh = ibase_connect('localhost:documents.fdb', 'sysdba', 'masterkey');

$result = ibase_query($dbh, 'SELECT title, content FROM documents WHERE id = 42');

$row = ibase_fetch_assoc($result, IBASE_TEXT);

if ($row !== false) {
    echo 'Titel: ' . $row['TITLE'] . PHP_EOL;
    echo 'Inhalt: ' . $row['CONTENT'] . PHP_EOL; // BLOB wird direkt als Text ausgegeben
} else {
    echo 'Kein Datensatz gefunden.';
}

ibase_free_result($result);
ibase_close($dbh);
?>
Titel: PHP-Dokumentation Inhalt: Dies ist der vollständige Inhalt des Dokuments...

// Wichtig · Fallstricke

Deprecation / Entfernung: Die gesamte ibase_*-Erweiterung wurde in PHP 8.0 aus dem PHP-Core entfernt. Für PHP 8.x muss die PECL-Erweiterung interbase oder eine kompatible Drittanbieterlösung (z. B. FirebirdSQL/php-firebird) verwendet werden. Für neue Projekte wird empfohlen, stattdessen PDO mit dem Firebird-Treiber (PDO_FIREBIRD) einzusetzen.

Spaltennamen: Die Schlüssel des zurückgegebenen Arrays sind immer in Großbuchstaben, unabhängig davon, wie die Spaltennamen in der Datenbank oder der SQL-Abfrage definiert wurden. Aliase in der SELECT-Klausel werden ebenfalls in Großbuchstaben umgewandelt.

Ressourcen freigeben: Ergebnis-Ressourcen sollten nach Verwendung stets mit ibase_free_result() freigegeben werden, um Speicherlecks zu vermeiden.