Signatur
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
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);
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);
// 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.