Start · Sprachen · PHP · Referenz · fbird_field_info

fbird_field_info

Funktion

Gibt ein assoziatives Array mit Metainformationen zu einem bestimmten Feld eines Firebird/InterBase-Abfrageergebnisses zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

fbird_field_info(resource $result, int $field_number): array|false

Beschreibung

fbird_field_info() liefert Metadaten zu einem Ergebnisfeld einer Firebird- oder InterBase-Datenbankabfrage. Das zurückgegebene Array enthält Informationen wie den Feldnamen, den Alias, den Tabellennamen sowie den Datentyp und die Länge des Feldes.

Die Funktion ist nützlich, wenn zur Laufzeit dynamisch mit Abfrageergebnissen gearbeitet wird und die Struktur des Ergebnissets nicht im Voraus bekannt ist – etwa beim Aufbau generischer Datenbankwerkzeuge, Exportfunktionen oder automatisch generierter Formulare.

Der Rückgabewert ist ein assoziatives Array mit den Schlüsseln name (Feldname), alias (Alias des Feldes in der Abfrage), relation (Tabellenname), length (Feldlänge in Bytes) und type (SQL-Datentyp als Zeichenkette).

Hinweis: fbird_field_info() ist ein Alias für ibase_field_info(). Beide Funktionen beziehen sich auf die InterBase/Firebird-Erweiterung (ibase). Die Erweiterung gilt ab PHP 7.4 als veraltet und wurde in PHP 8.0 aus dem offiziellen Core entfernt; sie steht seitdem als PECL-Paket (ibase) zur Verfügung.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Eine gültige Ergebnis-Ressource, die von fbird_query() oder fbird_execute() zurückgegeben wurde.
$field_number Pflicht int Der nullbasierte Index des Feldes, über das Informationen abgerufen werden sollen. Das erste Feld hat den Index 0.

Rückgabewert

Typ
array|false
Beschreibung
Gibt bei Erfolg ein assoziatives Array mit den Schlüsseln name, alias, relation, length und type zurück. Im Fehlerfall wird false zurückgegeben.

Beispiele

Feldmetadaten einer SELECT-Abfrage ausgeben

<?php
// Datenbankverbindung herstellen
$dbh = fbird_connect('localhost:/pfad/zur/datenbank.fdb', 'SYSDBA', 'masterkey');

// Abfrage ausführen
$result = fbird_query($dbh, 'SELECT id, vorname, nachname FROM kunden');

// Anzahl der Felder im Ergebnis ermitteln
$feldAnzahl = fbird_num_fields($result);

for ($i = 0; $i < $feldAnzahl; $i++) {
    $info = fbird_field_info($result, $i);
    echo 'Feld #' . $i . PHP_EOL;
    echo '  Name:     ' . $info['name']     . PHP_EOL;
    echo '  Alias:    ' . $info['alias']    . PHP_EOL;
    echo '  Tabelle:  ' . $info['relation'] . PHP_EOL;
    echo '  Laenge:   ' . $info['length']   . PHP_EOL;
    echo '  Typ:      ' . $info['type']     . PHP_EOL;
}

fbird_free_result($result);
fbird_close($dbh);
Feld #0 Name: ID Alias: ID Tabelle: KUNDEN Laenge: 4 Typ: INTEGER Feld #1 Name: VORNAME Alias: VORNAME Tabelle: KUNDEN Laenge: 50 Typ: VARYING Feld #2 Name: NACHNAME Alias: NACHNAME Tabelle: KUNDEN Laenge: 50 Typ: VARYING

Generischer CSV-Export mit dynamischer Spaltenerkennung

<?php
$dbh = fbird_connect('localhost:/pfad/zur/datenbank.fdb', 'SYSDBA', 'masterkey');
$result = fbird_query($dbh, 'SELECT * FROM produkte');

$feldAnzahl = fbird_num_fields($result);

// Kopfzeile aus Feldnamen erzeugen
$kopfzeile = [];
for ($i = 0; $i < $feldAnzahl; $i++) {
    $info = fbird_field_info($result, $i);
    $kopfzeile[] = $info['name'];
}
echo implode(';', $kopfzeile) . PHP_EOL;

// Datensätze ausgeben
while ($zeile = fbird_fetch_row($result)) {
    echo implode(';', $zeile) . PHP_EOL;
}

fbird_free_result($result);
fbird_close($dbh);
ID;BEZEICHNUNG;PREIS 1;Apfel;0.99 2;Banane;1.49

// Wichtig · Fallstricke

Deprecation / Entfernung: Die InterBase/Firebird-Erweiterung (ibase), zu der fbird_field_info() gehört, wurde ab PHP 7.4 als veraltet markiert und in PHP 8.0 aus dem PHP-Core entfernt. Für PHP 8+ steht sie als PECL-Erweiterung bereit. Als moderne Alternative wird die Verwendung von Firebird PDO (pdo_firebird) empfohlen.

fbird_field_info() ist ein Alias von ibase_field_info(). Beide Funktionen verhalten sich identisch.

Der Feldindex ist nullbasiert. Ein ungültiger Index führt zu einer Warnung und dem Rückgabewert false.