Start · Sprachen · PHP · Referenz · ibase_field_info

ibase_field_info

Funktion

Gibt Informationen zu einem bestimmten Feld eines Interbase/Firebird-Abfrageergebnisses zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

ibase_field_info(resource $result, int $field_number): array

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

Typ
array
Beschreibung
Gibt ein assoziatives Array mit den folgenden Schlüsseln zurück:
  • name – Der Name der Spalte.
  • alias – Der Alias der Spalte (sofern definiert, z.B. per AS in 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);
Feld #0: Name: EMP_ID Alias: EMP_ID Tabelle: EMPLOYEES Länge: 4 Typ: INTEGER Feld #1: Name: FIRST_NAME Alias: FIRST_NAME Tabelle: EMPLOYEES Länge: 20 Typ: VARCHAR Feld #2: Name: LAST_NAME Alias: LAST_NAME Tabelle: EMPLOYEES Länge: 30 Typ: VARCHAR

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);
<table border="1"> <tr> <th>ID</th> <th>Vorname</th> </tr> <tr> <td>1</td> <td>John</td> </tr> ...</table>

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