Signatur
Beschreibung
odbc_field_len() ermittelt die maximale Länge bzw. Präzision einer Spalte in einem ODBC-Abfrageergebnis. Der Rückgabewert gibt an, wie viele Zeichen oder Ziffern ein Wert in dieser Spalte maximal umfassen kann – abhängig vom Datentyp (z. B. VARCHAR(100) liefert 100, DECIMAL(10,2) liefert 10).
Diese Funktion ist nützlich, wenn zur Laufzeit Metadaten über die Struktur einer Datenbanktabelle oder -abfrage benötigt werden, ohne das Schema vorab zu kennen. So können etwa dynamische Formulare oder Validierungen auf Basis der tatsächlichen Datenbankdefinitionen aufgebaut werden.
Die Spalten werden über ihren 1-basierten Index angesprochen. Der erste Parameter muss eine gültige ODBC-Ergebniskennung (Statement-Handle) sein, wie sie von odbc_exec() oder odbc_prepare() zurückgegeben wird.
Hinweis: Für numerische Typen entspricht der Rückgabewert der Gesamtpräzision, nicht der Anzahl der Nachkommastellen. Letztere kann mit odbc_field_scale() abgefragt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $statement Pflicht | resource | Eine gültige ODBC-Ergebniskennung, wie sie von odbc_exec(), odbc_prepare() oder einer ähnlichen Funktion zurückgegeben wird. |
|
| $field Pflicht | int | Der 1-basierte Index der Spalte im Ergebnissatz. Der erste Feldindex ist 1. |
Rückgabewert
int zurück, oder false bei einem Fehler (z. B. ungültiger Index oder ungültiges Statement-Handle).Beispiele
Feldlänge einer einzelnen Spalte abfragen
<?php
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$result = odbc_exec($conn, 'SELECT vorname, nachname, alter FROM kunden');
if (!$result) {
die('Abfrage fehlgeschlagen');
}
// Länge der ersten Spalte (vorname) ermitteln
$laenge = odbc_field_len($result, 1);
echo 'Maximale Länge von "vorname": ' . $laenge . PHP_EOL;
odbc_close($conn);
Metadaten aller Spalten eines Ergebnisses ausgeben
<?php
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$result = odbc_exec($conn, 'SELECT id, bezeichnung, preis FROM produkte');
if (!$result) {
die('Abfrage fehlgeschlagen');
}
$anzahlFelder = odbc_num_fields($result);
echo "Spalten-Metadaten:\n";
for ($i = 1; $i <= $anzahlFelder; $i++) {
$name = odbc_field_name($result, $i);
$typ = odbc_field_type($result, $i);
$laenge = odbc_field_len($result, $i);
echo sprintf(" Spalte %d: %-15s Typ: %-10s Länge: %d\n", $i, $name, $typ, $laenge);
}
odbc_close($conn);
// Wichtig · Fallstricke
Der Feldindex ist 1-basiert – ein Index von 0 führt zu einem Fehler oder gibt false zurück. Dies weicht von vielen PHP-Arrays ab, die 0-basiert sind.
Bei numerischen Datentypen wie DECIMAL(10,2) gibt odbc_field_len() nur die Gesamtpräzision (10) zurück. Die Anzahl der Nachkommastellen muss separat mit odbc_field_scale() abgefragt werden.
Die tatsächlich zurückgegebene Länge kann je nach ODBC-Treiber und Datenbanksystem variieren. Nicht alle Treiber liefern konsistente Werte für alle Datentypen (z. B. TEXT oder BLOB).