Start · Sprachen · PHP · Referenz · odbc_field_name

odbc_field_name

Funktion

Gibt den Namen einer Spalte (Feld) im ODBC-Ergebnis anhand ihrer 1-basierten Position zurück.

seit PHP 3.0.0 Kategorie: db

Signatur

odbc_field_name(Odbc\Result $statement, int $field): string|false

Beschreibung

odbc_field_name() ermittelt den Spaltennamen einer bestimmten Spalte in einem ODBC-Abfrageergebnis. Die Spalte wird durch ihre numerische Position angegeben, wobei die Zählung bei 1 beginnt. Die Funktion ist nützlich, wenn Spaltennamen zur Laufzeit nicht bekannt sind und dynamisch ausgelesen werden müssen, etwa beim generischen Aufbau von Tabellen oder beim Inspizieren unbekannter Datenbankstrukturen.

In Kombination mit odbc_num_fields() lässt sich über alle Spalten eines Ergebnisses iterieren und deren Namen ermitteln, ohne die Abfrage oder das Schema im Voraus kennen zu müssen. Dies ist besonders hilfreich bei der Entwicklung von Datenbank-Abstraktionsschichten oder Diagnose-Werkzeugen.

Die Funktion gibt false zurück, wenn die angegebene Spaltennummer außerhalb des gültigen Bereichs liegt oder ein anderer Fehler auftritt. Es sollte daher stets geprüft werden, ob der Rückgabewert von false verschieden ist, bevor er weiterverwendet wird.

Parameter

Name Typ Default Beschreibung
$statement Pflicht Odbc\Result Eine gültige ODBC-Ergebnis-Ressource, wie sie von odbc_exec(), odbc_prepare() oder ähnlichen Funktionen zurückgegeben wird.
$field Pflicht int Die 1-basierte Position der Spalte im Ergebnissatz. Der erste Wert beginnt bei 1, der letzte liegt bei odbc_num_fields($statement).

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Spaltennamen als string zurück. Liegt die angegebene Spaltennummer außerhalb des gültigen Bereichs oder tritt ein Fehler auf, wird false zurückgegeben.

Beispiele

Alle Spaltennamen eines ODBC-Ergebnisses ausgeben

<?php
$dsn  = 'myDSN';
$user = 'dbuser';
$pass = 'secret';

$conn = odbc_connect($dsn, $user, $pass);
if (!$conn) {
    die('Verbindung fehlgeschlagen: ' . odbc_errormsg());
}

$result = odbc_exec($conn, 'SELECT id, name, email FROM users');
if (!$result) {
    die('Abfrage fehlgeschlagen: ' . odbc_errormsg($conn));
}

$numFields = odbc_num_fields($result);
echo "Spalten im Ergebnis:\n";
for ($i = 1; $i <= $numFields; $i++) {
    $fieldName = odbc_field_name($result, $i);
    echo "  Spalte $i: $fieldName\n";
}

odbc_free_result($result);
odbc_close($conn);
?>
Spalten im Ergebnis: Spalte 1: id Spalte 2: name Spalte 3: email

Dynamische Tabelle aus ODBC-Ergebnis aufbauen

<?php
$conn   = odbc_connect('myDSN', 'dbuser', 'secret');
$result = odbc_exec($conn, 'SELECT * FROM products');

$numFields = odbc_num_fields($result);

// Tabellenheader dynamisch erzeugen
echo "<table>\n<tr>\n";
for ($i = 1; $i <= $numFields; $i++) {
    $name = odbc_field_name($result, $i);
    echo "  <th>" . htmlspecialchars($name) . "</th>\n";
}
echo "</tr>\n";

// Tabellenzeilen ausgeben
while (odbc_fetch_row($result)) {
    echo "<tr>\n";
    for ($i = 1; $i <= $numFields; $i++) {
        $value = odbc_result($result, $i);
        echo "  <td>" . htmlspecialchars((string)$value) . "</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

odbc_free_result($result);
odbc_close($conn);
?>

// Wichtig · Fallstricke

Spaltenindex beginnt bei 1: Im Gegensatz zu PHP-Arrays beginnt die Nummerierung der Spalten bei 1, nicht bei 0. Ein häufiger Fehler ist der Aufruf mit Index 0, der false zurückgibt.

Groß-/Kleinschreibung: Der zurückgegebene Spaltenname hängt vom ODBC-Treiber und dem Datenbanksystem ab. Manche Treiber liefern Namen in Großbuchstaben, andere in der Originalschreibweise. Vergleiche sollten daher case-insensitiv durchgeführt werden (strcasecmp()).

Ab PHP 8.1 ist der Typ des ersten Parameters von resource auf Odbc\Result geändert worden, bleibt aber abwärtskompatibel zu bestehendem Code mit Ressource-Variablen.