Start · Sprachen · PHP · Referenz · fbird_num_fields

fbird_num_fields

Funktion

Gibt die Anzahl der Felder (Spalten) in einem Firebird/InterBase-Abfrageergebnis zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

fbird_num_fields(resource $result): int

Beschreibung

fbird_num_fields() ermittelt, wie viele Felder (Spalten) eine zuvor ausgeführte Firebird- oder InterBase-Datenbankabfrage zurückliefert. Die Funktion ist hilfreich, wenn die Struktur der Ergebnismenge zur Laufzeit nicht bekannt ist, z. B. beim dynamischen Verarbeiten beliebiger SELECT-Statements.

Typische Anwendungsfälle sind das generische Iterieren über alle Spalten eines Ergebnisses, das Aufbauen dynamischer Tabellenausgaben oder das Validieren von Abfrageergebnissen in Test-Szenarien. Der Rückgabewert entspricht exakt der Anzahl der im SELECT-Teil genannten Spalten, einschließlich berechneter Ausdrücke und Aliase.

Die Funktion ist ein Alias für ibase_num_fields() und steht in Verbindung mit der Firebird-Erweiterung (php_interbase bzw. php_firebird). Sie arbeitet ausschließlich mit gültigen Ergebnis-Ressourcen, die von fbird_query() oder fbird_execute() zurückgegeben wurden.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Eine gültige Ergebnis-Ressource, die von fbird_query() oder fbird_execute() zurückgegeben wurde.

Rückgabewert

Typ
int
Beschreibung
Gibt die Anzahl der Felder (Spalten) im Abfrageergebnis als ganzzahligen Wert zurück. Bei Fehler oder ungültiger Ressource wird false zurückgegeben.

Beispiele

Anzahl der Felder einer SELECT-Abfrage ausgeben

<?php
$dbh = fbird_connect('localhost:/var/lib/firebird/employee.fdb', 'sysdba', 'masterkey');

if (!$dbh) {
    die('Verbindung fehlgeschlagen: ' . fbird_errmsg());
}

$result = fbird_query($dbh, 'SELECT EMP_NO, FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEE');

if ($result) {
    $anzahl = fbird_num_fields($result);
    echo "Anzahl der Felder: " . $anzahl . PHP_EOL;
} else {
    echo 'Abfrage fehlgeschlagen: ' . fbird_errmsg();
}

fbird_close($dbh);
Anzahl der Felder: 4

Dynamisches Auslesen aller Spalteninformationen

<?php
$dbh = fbird_connect('localhost:/var/lib/firebird/employee.fdb', 'sysdba', 'masterkey');
$result = fbird_query($dbh, 'SELECT EMP_NO, FIRST_NAME, LAST_NAME FROM EMPLOYEE');

if ($result) {
    $anzahl = fbird_num_fields($result);
    echo "Die Abfrage hat {$anzahl} Felder:" . PHP_EOL;

    for ($i = 0; $i < $anzahl; $i++) {
        $feldInfo = fbird_field_info($result, $i);
        echo " - Feld #{$i}: " . $feldInfo['name'] . ' (' . $feldInfo['type'] . ')' . PHP_EOL;
    }
}

fbird_close($dbh);
Die Abfrage hat 3 Felder: - Feld #0: EMP_NO (INTEGER) - Feld #1: FIRST_NAME (VARYING) - Feld #2: LAST_NAME (VARYING)

// Wichtig · Fallstricke

Alias: fbird_num_fields() ist ein Alias von ibase_num_fields(). Beide Funktionen sind funktional identisch. In neuerem Code wird empfohlen, einheitlich entweder das fbird_- oder das ibase_-Präfix zu verwenden.

Deprecation: Die InterBase/Firebird-Erweiterung wurde in PHP 7.4 als veraltet markiert und in PHP 8.0 aus dem Core entfernt. Für aktuelle Projekte sollte stattdessen die Firebird PDO-Erweiterung oder eine externe PECL-Erweiterung verwendet werden.

Die Funktion funktioniert nur mit SELECT-Abfragen oder anderen Abfragen, die ein Ergebnis zurückliefern. Für INSERT-, UPDATE- oder DELETE-Statements ist sie nicht anwendbar.