Signatur
Beschreibung
ibase_field_info() ermittelt Metadaten zu einer einzelnen Spalte (einem Feld) innerhalb eines Interbase- oder Firebird-Abfrageergebnisses. Die Funktion liefert ein assoziatives Array mit Angaben zu Name, Alias, Tabelle, Länge und Datentyp des Feldes.
Die Funktion ist nützlich, wenn man dynamisch auf Ergebnismengen reagieren möchte, ohne die Spaltenstruktur vorab zu kennen – etwa beim Aufbau generischer Datenbankexplorer-Tools oder beim automatischen Generieren von HTML-Tabellen aus beliebigen Abfragen.
Der Parameter field_number ist nullbasiert, d.h. das erste Feld hat den Index 0. Um die Anzahl der verfügbaren Felder zu ermitteln, kann ibase_num_fields() genutzt werden.
Hinweis: Die Interbase-Erweiterung (ibase_*) gilt seit PHP 7.4 als veraltet und wurde in PHP 8.0 entfernt. Für neue Projekte sollte stattdessen die ibase- oder Firebird-Erweiterung über PECL oder die PDO_Firebird-Erweiterung verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | resource | Eine gültige Interbase/Firebird-Ergebnisressource, wie sie von ibase_query() oder ibase_execute() zurückgegeben wird. |
|
| $field_number Pflicht | int | Der nullbasierte Index des Feldes, zu dem Informationen abgerufen werden sollen. Das erste Feld hat den Index 0. |
Rückgabewert
name– Der Name der Spalte.alias– Der Alias der Spalte (sofern definiert, z.B. perASin der SQL-Abfrage).relation– Der Name der Tabelle, aus der die Spalte stammt.length– Die maximale Länge des Feldinhalts in Bytes.type– Der Datentyp des Feldes als String (z.B."VARCHAR","INTEGER").
Beispiele
Feldmetadaten einer Abfrage ausgeben
<?php
$dbh = ibase_connect('localhost:employees.fdb', 'sysdba', 'masterkey');
$result = ibase_query($dbh, 'SELECT emp_id, first_name, last_name FROM employees');
$numFields = ibase_num_fields($result);
for ($i = 0; $i < $numFields; $i++) {
$info = ibase_field_info($result, $i);
echo "Feld #$i:\n";
echo " Name: " . $info['name'] . "\n";
echo " Alias: " . $info['alias'] . "\n";
echo " Tabelle: " . $info['relation'] . "\n";
echo " Länge: " . $info['length'] . "\n";
echo " Typ: " . $info['type'] . "\n\n";
}
ibase_free_result($result);
ibase_close($dbh);
Dynamische HTML-Tabelle aus Abfrageergebnis erzeugen
<?php
$dbh = ibase_connect('localhost:employees.fdb', 'sysdba', 'masterkey');
$result = ibase_query($dbh, 'SELECT emp_id AS ID, first_name AS Vorname FROM employees');
$numFields = ibase_num_fields($result);
echo "<table border=\"1\">\n<tr>\n";
// Spaltenköpfe dynamisch aus Feldaliassen erzeugen
for ($i = 0; $i < $numFields; $i++) {
$info = ibase_field_info($result, $i);
$header = !empty($info['alias']) ? $info['alias'] : $info['name'];
echo " <th>" . htmlspecialchars($header) . "</th>\n";
}
echo "</tr>\n";
// Datenzeilen ausgeben
while ($row = ibase_fetch_row($result)) {
echo "<tr>\n";
foreach ($row as $value) {
echo " <td>" . htmlspecialchars((string)$value) . "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
ibase_free_result($result);
ibase_close($dbh);
// Wichtig · Fallstricke
Deprecation-Hinweis: Die gesamte ibase_*-Funktionsfamilie wurde in PHP 7.4 als veraltet markiert und in PHP 8.0 vollständig entfernt. Für aktuelle Projekte empfiehlt sich die Verwendung von PDO mit dem Firebird-Treiber (PDO_Firebird) oder der separaten PECL-Erweiterung php-firebird.
Der field_number-Index ist nullbasiert. Ein ungültiger Index (außerhalb des Bereichs 0 bis ibase_num_fields() - 1) führt zu einem PHP-Fehler.
Der zurückgegebene Typ (type) entspricht dem Interbase/Firebird-internen Typ und ist ein String wie "VARCHAR", "INTEGER", "DATE" etc. – er hängt vom jeweiligen Datenbankserver und der Firebird-Version ab.