Start · Sprachen · PHP · Referenz · db2_num_fields

db2_num_fields

Funktion

Gibt die Anzahl der Felder (Spalten) in einem Ergebnis-Set eines vorbereiteten oder ausgeführten DB2-Statements zurück.

seit PHP 5.1.0 Kategorie: db

Signatur

db2_num_fields(resource $stmt): int|false

Beschreibung

db2_num_fields() liefert die Anzahl der Spalten, die ein ausgeführtes oder vorbereitetes DB2-Statement zurückgibt. Die Funktion ist besonders nützlich, wenn Ergebnisse dynamisch verarbeitet werden sollen, ohne die Spaltenanzahl im Voraus zu kennen – beispielsweise beim Aufbau generischer Ausgabe-Routinen oder Export-Funktionen.

Das übergebene Statement-Handle muss zuvor mit db2_exec(), db2_execute() oder db2_prepare() erzeugt worden sein. Bei db2_prepare() ist die Feldanzahl auch bereits vor dem eigentlichen Ausführen des Statements verfügbar, sofern die Datenbank entsprechende Metadaten liefert.

Die Funktion gibt im Fehlerfall (z. B. bei einem ungültigen Statement-Handle oder einem Statement, das kein Ergebnis-Set zurückliefert) false zurück. Dies sollte stets geprüft werden, um Folgefehler in der Spaltenverarbeitung zu vermeiden.

Typischer Einsatz ist das Iterieren über alle Spalten eines Ergebnisses mithilfe einer for-Schleife in Kombination mit db2_field_name() oder db2_result().

Parameter

Name Typ Default Beschreibung
$stmt Pflicht resource Ein gültiges Statement-Handle, das durch db2_exec(), db2_prepare() oder db2_execute() erzeugt wurde und ein Ergebnis-Set repräsentiert.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die Anzahl der Felder (Spalten) im Ergebnis-Set als int zurück. Bei einem ungültigen Statement-Handle oder einem Statement ohne Ergebnis-Set wird false zurückgegeben.

Beispiele

Feldanzahl eines ausgeführten SELECT-Statements ermitteln

<?php
$conn = db2_connect('SAMPLE', 'db2user', 'geheim');
if ($conn) {
    $sql = 'SELECT id, vorname, nachname, email FROM kunden';
    $stmt = db2_exec($conn, $sql);
    if ($stmt) {
        $anzahl = db2_num_fields($stmt);
        echo "Anzahl der Felder: " . $anzahl . PHP_EOL;
    } else {
        echo "Fehler beim Ausführen: " . db2_stmt_errormsg();
    }
    db2_close($conn);
}
Anzahl der Felder: 4

Generische Ausgabe aller Spalten eines Ergebnisses

<?php
$conn = db2_connect('SAMPLE', 'db2user', 'geheim');
if ($conn) {
    $stmt = db2_exec($conn, 'SELECT * FROM produkte FETCH FIRST 5 ROWS ONLY');
    if ($stmt) {
        $feldanzahl = db2_num_fields($stmt);
        // Spaltenköpfe ausgeben
        $kopfzeile = [];
        for ($i = 0; $i < $feldanzahl; $i++) {
            $kopfzeile[] = db2_field_name($stmt, $i);
        }
        echo implode(' | ', $kopfzeile) . PHP_EOL;
        echo str_repeat('-', 60) . PHP_EOL;
        // Datenzeilen ausgeben
        while ($zeile = db2_fetch_array($stmt)) {
            echo implode(' | ', $zeile) . PHP_EOL;
        }
    }
    db2_close($conn);
}
id | name | preis | lagerbestand ------------------------------------------------------------ 1 | Widget A | 9.99 | 150 2 | Widget B | 14.99 | 80 ...

// Wichtig · Fallstricke

Wichtig: db2_num_fields() ist ausschließlich für Statements sinnvoll, die ein Ergebnis-Set zurückliefern (SELECT). Bei DML-Statements (INSERT, UPDATE, DELETE) gibt die Funktion false zurück, da kein Ergebnis-Set vorliegt.

Das IBM DB2-Erweiterungsmodul (ibm_db2) muss in PHP installiert und aktiviert sein. Die Funktion steht nicht in einer Standard-PHP-Installation zur Verfügung.