Signatur
Beschreibung
fbird_fetch_assoc() ist ein Alias für ibase_fetch_assoc() und gehört zur Firebird/InterBase-Datenbankschnittstelle von PHP. Die Funktion liest jeweils die nächste Zeile aus einem Ergebnis-Ressource-Objekt und gibt diese als assoziatives Array zurück, bei dem die Spaltennamen (in Großbuchstaben) die Schlüssel bilden.
Die Funktion eignet sich besonders gut, wenn man auf Spalten über ihren Namen statt über einen numerischen Index zugreifen möchte, was den Code lesbarer und wartbarer macht. Sie wird typischerweise in einer Schleife verwendet, bis sie false zurückgibt, was das Ende des Ergebnisses signalisiert.
Mit dem optionalen Parameter fetch_flag lässt sich das Verhalten beim Abrufen von BLOB-Feldern und Arrays steuern. Die Konstante IBASE_TEXT bewirkt, dass BLOB-Felder als Text geladen werden; IBASE_UNIXTIME gibt Datums- und Zeitfelder als Unix-Timestamp zurück. Diese Konstanten können mit dem bitweisen OR-Operator kombiniert werden.
Hinweis: Diese Funktion ist seit PHP 7.4 nicht mehr im Core von PHP enthalten und wurde in die PECL-Erweiterung ibase ausgelagert. Ab PHP 8.0 muss die Erweiterung separat installiert werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | resource | Eine gültige Ergebnis-Ressource, die von einer Funktion wie fbird_query() oder ibase_query() zurückgegeben wurde. |
|
| $fetch_flag | int | 0 | Optionaler Bitflag zur Steuerung des Abrufverhaltens. Mögliche Werte: IBASE_TEXT (lädt BLOB-Felder als Text) und IBASE_UNIXTIME (gibt Datum/Zeit als Unix-Timestamp zurück). Können per | kombiniert werden. |
Rückgabewert
false zurück, wenn keine weiteren Zeilen vorhanden sind oder ein Fehler aufgetreten ist.Beispiele
Alle Zeilen einer Tabelle ausgeben
<?php
$dbh = fbird_connect('localhost:/var/lib/firebird/mydb.fdb', 'SYSDBA', 'masterkey');
$result = fbird_query($dbh, 'SELECT ID, NAME, EMAIL FROM USERS');
while ($row = fbird_fetch_assoc($result)) {
echo 'ID: ' . $row['ID'] . ', Name: ' . $row['NAME'] . ', E-Mail: ' . $row['EMAIL'] . PHP_EOL;
}
fbird_free_result($result);
fbird_close($dbh);
?>
BLOB-Felder als Text laden und Datum als Unix-Timestamp
<?php
$dbh = fbird_connect('localhost:/var/lib/firebird/mydb.fdb', 'SYSDBA', 'masterkey');
$result = fbird_query($dbh, 'SELECT ID, BESCHREIBUNG, ERSTELLT_AM FROM ARTIKEL');
while ($row = fbird_fetch_assoc($result, IBASE_TEXT | IBASE_UNIXTIME)) {
$datum = date('d.m.Y H:i', $row['ERSTELLT_AM']);
echo 'Artikel #' . $row['ID'] . ' vom ' . $datum . ':' . PHP_EOL;
echo $row['BESCHREIBUNG'] . PHP_EOL;
}
fbird_free_result($result);
fbird_close($dbh);
?>
// Wichtig · Fallstricke
Deprecation und Verfügbarkeit: Die fbird_*-Funktionen sind Aliase der ibase_*-Funktionen. Ab PHP 7.4 wurde die InterBase-Erweiterung aus dem PHP-Core entfernt und steht nur noch über PECL zur Verfügung. Bei neuen Projekten sollte die offizielle Firebird PHP-Erweiterung oder PDO mit dem Firebird-Treiber (PDO_Firebird) in Betracht gezogen werden.
Spaltennamen in Großbuchstaben: Firebird/InterBase konvertiert Spaltennamen intern in Großbuchstaben (sofern sie nicht in Anführungszeichen definiert wurden). Der Zugriff auf Array-Schlüssel muss daher in Großbuchstaben erfolgen, z. B. $row['NAME'] statt $row['name'].
Sicherheit: Wie bei allen Datenbankabfragen sollten Benutzereingaben niemals direkt in SQL-Strings eingebaut werden. Verwende fbird_execute() mit vorbereiteten Statements (fbird_prepare()), um SQL-Injection zu verhindern.