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