Start · Sprachen · PHP · Referenz · db2_field_num

db2_field_num

Funktion

Gibt die 0-basierte Position (Index) einer Spalte innerhalb des Ergebnis-Sets einer DB2-Abfrage zurück.

seit PHP 5.1.0 Kategorie: db

Signatur

db2_field_num(resource $stmt, string|int $column): int|false

Beschreibung

db2_field_num() ermittelt den numerischen Index einer Spalte im Ergebnis-Set einer vorbereiteten oder ausgeführten DB2-Anweisung. Der zurückgegebene Index ist 0-basiert, d. h. die erste Spalte hat den Index 0.

Der Parameter column kann entweder der Name der Spalte als Zeichenkette oder die Position der Spalte als Ganzzahl übergeben werden. Wird ein Name übergeben, liefert die Funktion die zugehörige Positionsnummer – was nützlich ist, wenn man bei dynamisch aufgebauten SELECT-Statements die Spaltenreihenfolge programmatisch ermitteln muss.

Die Funktion ist Teil der IBM DB2-Erweiterung (ibm_db2) für PHP und wird typischerweise im Zusammenspiel mit db2_execute() und db2_fetch_array() oder ähnlichen Fetch-Funktionen eingesetzt, um Spaltenpositionen vor dem Abruf von Daten zu bestimmen.

Schlägt die Suche fehl – etwa weil der angegebene Spaltenname nicht existiert oder das Statement-Handle ungültig ist –, gibt die Funktion false zurück.

Parameter

Name Typ Default Beschreibung
$stmt Pflicht resource Ein gültiges Statement-Handle, das durch db2_prepare() oder db2_exec() erzeugt und erfolgreich ausgeführt wurde.
$column Pflicht string|int Der Name der Spalte als Zeichenkette oder der 0-basierte numerische Index der Spalte. Wird ein Name angegeben, wird die entsprechende Positionsnummer zurückgegeben.

Rückgabewert

Typ
int|false
Beschreibung
Gibt den 0-basierten numerischen Index der Spalte als int zurück. Bei einem ungültigen Statement-Handle, einem nicht vorhandenen Spaltennamen oder einem anderen Fehler wird false zurückgegeben.

Beispiele

Spaltenposition anhand des Namens ermitteln

<?php
$conn = db2_connect('SAMPLE', 'db2user', 'secret');

if ($conn) {
    $sql  = 'SELECT id, vorname, nachname, email FROM benutzer';
    $stmt = db2_exec($conn, $sql);

    if ($stmt) {
        $pos = db2_field_num($stmt, 'nachname');
        if ($pos !== false) {
            echo "Spalte 'nachname' hat Index: " . $pos . PHP_EOL;
        } else {
            echo "Spalte nicht gefunden." . PHP_EOL;
        }
    }

    db2_close($conn);
}
Spalte 'nachname' hat Index: 2

Alle Spaltenpositionen eines Ergebnis-Sets auflisten

<?php
$conn = db2_connect('SAMPLE', 'db2user', 'secret');

if ($conn) {
    $sql  = 'SELECT artikel_nr, bezeichnung, preis FROM artikel';
    $stmt = db2_exec($conn, $sql);

    if ($stmt) {
        $anzahlSpalten = db2_num_fields($stmt);
        echo "Spalten und ihre 0-basierten Positionen:" . PHP_EOL;

        for ($i = 0; $i < $anzahlSpalten; $i++) {
            $name = db2_field_name($stmt, $i);
            $pos  = db2_field_num($stmt, $name);
            echo "  {$name} => Position {$pos}" . PHP_EOL;
        }
    }

    db2_close($conn);
}
Spalten und ihre 0-basierten Positionen: ARTIKEL_NR => Position 0 BEZEICHNUNG => Position 1 PREIS => Position 2

// Wichtig · Fallstricke

Achtung: DB2 gibt Spaltennamen in der Regel in Großbuchstaben zurück. Wenn db2_field_num() mit einem Spaltennamen aufgerufen wird, muss die Groß-/Kleinschreibung beachtet werden – andernfalls wird false zurückgegeben. Verwende strtoupper(), um den Namen vor der Übergabe zu normalisieren.

Die Funktion setzt die IBM-DB2-Erweiterung (ibm_db2) voraus, die separat installiert und in der php.ini aktiviert werden muss. Sie ist nicht Bestandteil der Standard-PHP-Distribution.