Start · Sprachen · PHP · Referenz · odbc_field_num

odbc_field_num

Funktion

Gibt die Positionsnummer (1-basiert) einer Spalte im ODBC-Ergebnis anhand ihres Namens zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

odbc_field_num(resource $statement, string $field_name): int|false

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

Typ
int|false
Beschreibung
Gibt die 1-basierte Positionsnummer der Spalte als 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);
?>
Die Spalte 'nachname' hat die Position: 3

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);
?>
Spalte 'erstellt_am': Typ=TIMESTAMP, Länge=19

// 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.