Start · Sprachen · PHP · Referenz · odbc_field_len

odbc_field_len

Funktion

Gibt die Länge (Präzision) eines Feldes in einem ODBC-Ergebnissatz zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

odbc_field_len(resource $statement, int $field): int|false

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

Typ
int|false
Beschreibung
Gibt die Länge (Präzision) des angegebenen Feldes als 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);
Maximale Länge von "vorname": 50

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);
Spalten-Metadaten: Spalte 1: id Typ: INTEGER Länge: 10 Spalte 2: bezeichnung Typ: VARCHAR Länge: 100 Spalte 3: preis Typ: DECIMAL Länge: 10

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