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