Start · Sprachen · PHP · Referenz · db2_field_name

db2_field_name

Funktion

Gibt den Namen einer Spalte im Ergebnis-Set einer ausgeführten SQL-Anweisung zurück.

seit PHP 5.1.0 Kategorie: db

Signatur

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

Beschreibung

db2_field_name() ermittelt den Spaltennamen eines Ergebnis-Sets, das durch eine zuvor ausgeführte SQL-Anweisung erzeugt wurde. Die Funktion gehört zur IBM DB2-, Cloudscape- und Apache Derby-Erweiterung für PHP und ist nützlich, wenn Spaltenmetadaten dynamisch verarbeitet werden sollen.

Die Spalte kann entweder über ihren nullbasierten Index (0 für die erste Spalte) oder über ihren bereits bekannten Namen als string angesprochen werden. Dies erlaubt eine flexible Verwendung in Situationen, in denen die Struktur des Ergebnis-Sets nicht vollständig im Voraus bekannt ist.

Typischer Einsatzbereich ist die generische Ausgabe von Abfrageergebnissen, zum Beispiel beim Aufbau von dynamischen Tabellen oder beim Exportieren von Daten, wo Spaltenbezeichner programmatisch ausgelesen werden müssen.

  • Der Index ist nullbasiert: Die erste Spalte hat den Index 0.
  • Wird ein ungültiger Index oder ein nicht vorhandener Spaltenname übergeben, liefert die Funktion false.

Parameter

Name Typ Default Beschreibung
$stmt Pflicht resource Eine gültige Statement-Ressource, die durch db2_exec() oder db2_execute() erzeugt und ausgeführt wurde.
$column Pflicht int|string Entweder der nullbasierte numerische Index der Spalte (int) oder der Name der Spalte (string), deren Name ermittelt werden soll.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Spaltennamen als string zurück, wenn die Spalte gefunden wurde. Liefert false, falls der angegebene Index außerhalb des gültigen Bereichs liegt oder der angegebene Spaltenname nicht existiert.

Beispiele

Spaltennamen über Index auslesen

<?php
$conn = db2_connect('SAMPLE', 'db2inst1', 'ibmdb2');
if ($conn) {
    $sql = 'SELECT id, vorname, nachname FROM kunden';
    $stmt = db2_exec($conn, $sql);
    if ($stmt) {
        $spaltenanzahl = db2_num_fields($stmt);
        for ($i = 0; $i < $spaltenanzahl; $i++) {
            $name = db2_field_name($stmt, $i);
            echo "Spalte $i: $name\n";
        }
    }
    db2_close($conn);
}
Spalte 0: ID Spalte 1: VORNAME Spalte 2: NACHNAME

Spaltennamen über Namen prüfen

<?php
$conn = db2_connect('SAMPLE', 'db2inst1', 'ibmdb2');
if ($conn) {
    $sql = 'SELECT id, vorname, nachname FROM kunden';
    $stmt = db2_exec($conn, $sql);
    if ($stmt) {
        // Spaltenname anhand eines bekannten Namens abrufen (gibt ihn normalisiert zurück)
        $name = db2_field_name($stmt, 'VORNAME');
        if ($name !== false) {
            echo "Gefundene Spalte: $name\n";
        } else {
            echo "Spalte nicht gefunden.\n";
        }
    }
    db2_close($conn);
}
Gefundene Spalte: VORNAME

// Wichtig · Fallstricke

Groß-/Kleinschreibung: IBM DB2 gibt Spaltennamen standardmäßig in Großbuchstaben zurück. Beim Vergleich von Spaltennamen im PHP-Code sollte daher auf Groß-/Kleinschreibung geachtet werden bzw. strtolower() oder strtoupper() zur Normalisierung verwendet werden.

Indexbasis: Der Spaltenindex beginnt bei 0, nicht bei 1. Ein Off-by-one-Fehler führt zu einem Rückgabewert von false.

Verfügbarkeit: Diese Funktion setzt die PHP-Erweiterung ibm_db2 voraus, die standardmäßig nicht in allen PHP-Installationen enthalten ist.