Signatur
Beschreibung
odbc_field_num() ermittelt die numerische Position einer Spalte in einem ODBC-Abfrageergebnis. Die Nummerierung beginnt bei 1. Die Funktion ist nützlich, wenn man den Spaltennamen kennt, aber die Spaltenposition für andere ODBC-Funktionen benötigt, die eine Spaltennummer erwarten (z. B. odbc_field_type() oder odbc_field_len()).
Der Parameter field_name muss exakt dem Spaltennamen entsprechen, wie er vom Datenbanktreiber geliefert wird. Die Groß-/Kleinschreibung kann je nach Datenbanktreiber und Betriebssystem relevant sein. Bei einem unbekannten Feldnamen gibt die Funktion false zurück.
Diese Funktion ist besonders dann sinnvoll, wenn ODBC-Ergebnisse dynamisch verarbeitet werden und man spaltenbasierte Informationen über Name-zu-Index-Auflösung abrufen möchte, ohne die Reihenfolge der Spalten im SELECT-Statement fest kodieren zu müssen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $statement Pflicht | resource | Eine gültige ODBC-Ergebnisressource, wie sie von odbc_exec() oder odbc_execute() zurückgegeben wurde. |
|
| $field_name Pflicht | string | Der Name der Spalte, deren Positionsnummer ermittelt werden soll. Der Name muss dem vom ODBC-Treiber gelieferten Spaltennamen entsprechen. |
Rückgabewert
int zurück. Falls der angegebene Spaltenname nicht im Ergebnis gefunden wurde, wird false zurückgegeben.Beispiele
Spaltennummer anhand des Namens ermitteln
<?php
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . odbc_errormsg());
}
$result = odbc_exec($conn, 'SELECT id, vorname, nachname FROM kunden');
if ($result) {
$num = odbc_field_num($result, 'nachname');
if ($num !== false) {
echo "Die Spalte 'nachname' hat die Position: " . $num;
} else {
echo "Spalte nicht gefunden.";
}
}
odbc_close($conn);
?>
Spaltennummer für odbc_field_type verwenden
<?php
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');
$result = odbc_exec($conn, 'SELECT id, email, erstellt_am FROM benutzer');
if ($result) {
$spaltenName = 'erstellt_am';
$num = odbc_field_num($result, $spaltenName);
if ($num !== false) {
$typ = odbc_field_type($result, $num);
$laenge = odbc_field_len($result, $num);
echo "Spalte '{$spaltenName}': Typ={$typ}, Länge={$laenge}";
} else {
echo "Unbekannte Spalte: {$spaltenName}";
}
}
odbc_close($conn);
?>
// Wichtig · Fallstricke
Achtung zur Groß-/Kleinschreibung: Manche ODBC-Treiber liefern Spaltennamen ausschließlich in Großbuchstaben zurück (z. B. bestimmte Oracle- oder DB2-Treiber). Falls odbc_field_num() unerwartet false zurückgibt, sollte der tatsächliche Spaltenname mit odbc_field_name() überprüft werden.
Deprecation-Hinweis: Ab PHP 8.1 wurde die ODBC-Extension überarbeitet. Der Ressourcentyp resource für ODBC-Verbindungen und -Ergebnisse ist in zukünftigen PHP-Versionen möglicherweise durch dedizierte Objekte zu ersetzen. Aktuelle PHP-8-Versionen geben bei ungültigen Ressourcen einen TypeError aus.