Start · Sprachen · PHP · Referenz · ibase_num_fields

ibase_num_fields

Funktion

Gibt die Anzahl der Felder (Spalten) einer InterBase/Firebird-Ergebnismenge zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

ibase_num_fields(resource $result): int

Beschreibung

ibase_num_fields() ermittelt die Anzahl der Spalten in einer Ergebnismenge, die durch eine zuvor ausgeführte InterBase- oder Firebird-Datenbankabfrage erzeugt wurde. Die Funktion nimmt das Ergebnis-Handle entgegen, das von Funktionen wie ibase_query() oder ibase_execute() zurückgeliefert wird.

Der Rückgabewert kann genutzt werden, um dynamisch über alle Felder einer Ergebnismenge zu iterieren, ohne die genaue Spaltenanzahl im Voraus kennen zu müssen. In Kombination mit ibase_field_info() lassen sich so Metadaten aller Spalten zur Laufzeit ermitteln.

Die Funktion ist besonders nützlich beim Erstellen generischer Datenbankwerkzeuge oder Export-Routinen, bei denen die Struktur der Abfrageergebnisse nicht fest vorgegeben ist.

Hinweis: Die gesamte ibase_*-Erweiterung (Interbase) wurde mit PHP 8.0 aus dem PHP-Kern entfernt. Für neuere PHP-Versionen steht die PECL-Erweiterung ibase bzw. firebird zur Verfügung.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Eine gültige InterBase/Firebird-Ergebnismenge, wie sie von ibase_query() oder ibase_execute() zurückgegeben wird.

Rückgabewert

Typ
int
Beschreibung
Gibt die Anzahl der Felder (Spalten) in der Ergebnismenge als ganzzahligen Wert zurück.

Beispiele

Anzahl der Felder einer Abfrage ermitteln

<?php
$dbh = ibase_connect('localhost:employees.fdb', 'sysdba', 'masterkey');

$result = ibase_query($dbh, 'SELECT * FROM employees');

$numFields = ibase_num_fields($result);
echo "Anzahl der Spalten: " . $numFields . PHP_EOL;

ibase_free_result($result);
ibase_close($dbh);
Anzahl der Spalten: 5

Dynamische Ausgabe aller Feldnamen einer Ergebnismenge

<?php
$dbh = ibase_connect('localhost:employees.fdb', 'sysdba', 'masterkey');

$result = ibase_query($dbh, 'SELECT id, firstname, lastname, department, salary FROM employees');

$numFields = ibase_num_fields($result);

echo "Spalten in der Ergebnismenge:" . PHP_EOL;
for ($i = 0; $i < $numFields; $i++) {
    $fieldInfo = ibase_field_info($result, $i);
    echo "  [{$i}] " . $fieldInfo['name'] . " (Typ: " . $fieldInfo['type'] . ")" . PHP_EOL;
}

ibase_free_result($result);
ibase_close($dbh);
Spalten in der Ergebnismenge: [0] ID (Typ: INTEGER) [1] FIRSTNAME (Typ: VARCHAR) [2] LASTNAME (Typ: VARCHAR) [3] DEPARTMENT (Typ: VARCHAR) [4] SALARY (Typ: NUMERIC)

// Wichtig · Fallstricke

Deprecation / Entfernung: Die ibase_*-Funktionen wurden in PHP 7.4 als veraltet markiert und mit PHP 8.0 vollständig aus dem PHP-Kern entfernt. Für aktuelle PHP-Versionen muss die PECL-Erweiterung ibase (für InterBase) oder firebird manuell installiert werden.

Die Funktion liefert nur sinnvolle Ergebnisse für SELECT-Abfragen, die eine Ergebnismenge zurückgeben. Bei DML-Anweisungen (INSERT, UPDATE, DELETE) ohne Rückgabe von Zeilen ist das Verhalten undefiniert.