Start · Sprachen · PHP · Referenz · odbc_field_precision

odbc_field_precision

Funktion

Gibt die Genauigkeit (Präzision/Länge) eines Feldes im ODBC-Ergebnissatz zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

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

Beschreibung

odbc_field_precision liefert die Genauigkeit (auch bekannt als Präzision oder maximale Zeichenanzahl) einer bestimmten Spalte in einem ODBC-Abfrageergebnis. Der Rückgabewert entspricht der in der Datenbank definierten Spaltenbreite, z. B. VARCHAR(100) liefert 100, DECIMAL(10,2) liefert 10.

Diese Funktion ist nützlich, wenn man die Metadaten eines Ergebnissatzes dynamisch auswerten möchte – etwa um Formulare automatisch mit Maximalwerten für Eingabefelder zu befüllen oder um Daten korrekt zu formatieren, bevor sie weiterverarbeitet werden.

Die Felder werden dabei 1-basiert nummeriert, d. h. das erste Feld hat den Index 1. Die Funktion wird üblicherweise zusammen mit odbc_num_fields eingesetzt, um alle Felder eines Ergebnissatzes zu iterieren.

Hinweis: odbc_field_precision ist ein Alias für odbc_field_len; beide Funktionen liefern identische Ergebnisse.

Parameter

Name Typ Default Beschreibung
$statement Pflicht resource Ein gültiges ODBC-Ergebnis-Handle, wie es von odbc_exec oder odbc_execute zurückgegeben wird.
$field Pflicht int Die 1-basierte Feldnummer der Spalte, deren Genauigkeit abgerufen werden soll.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die Genauigkeit (Länge) des angegebenen Feldes als Ganzzahl zurück. Bei einem Fehler oder einem ungültigen Feld wird false zurückgegeben.

Beispiele

Feldpräzisionen eines Ergebnissatzes ausgeben

<?php
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');
if (!$conn) {
    die('Verbindung fehlgeschlagen: ' . odbc_errormsg());
}

$result = odbc_exec($conn, 'SELECT id, name, betrag FROM produkte');
if (!$result) {
    die('Abfragefehler: ' . odbc_errormsg($conn));
}

$anzahlFelder = odbc_num_fields($result);
for ($i = 1; $i <= $anzahlFelder; $i++) {
    $name      = odbc_field_name($result, $i);
    $precision = odbc_field_precision($result, $i);
    echo "Feld: {$name}, Genauigkeit: {$precision}\n";
}

odbc_free_result($result);
odbc_close($conn);
Feld: id, Genauigkeit: 10 Feld: name, Genauigkeit: 100 Feld: betrag, Genauigkeit: 12

Maximale Eingabelänge für HTML-Formular ermitteln

<?php
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');
$result = odbc_exec($conn, 'SELECT vorname, nachname FROM kunden WHERE 1=0');

$felder = [];
for ($i = 1; $i <= odbc_num_fields($result); $i++) {
    $felder[] = [
        'name'      => odbc_field_name($result, $i),
        'maxlength' => odbc_field_precision($result, $i),
    ];
}

odbc_free_result($result);
odbc_close($conn);

foreach ($felder as $feld) {
    echo '<input type="text" name="' . htmlspecialchars($feld['name']) . '"'
       . ' maxlength="' . (int)$feld['maxlength'] . '">\n';
}
<input type="text" name="vorname" maxlength="50"> <input type="text" name="nachname" maxlength="80">

// Wichtig · Fallstricke

Alias: odbc_field_precision ist ein direkter Alias für odbc_field_len. Beide Funktionen verhalten sich identisch; es wird empfohlen, konsistent eine der beiden zu verwenden.

Treiber-Abhängigkeit: Der zurückgegebene Wert hängt vom verwendeten ODBC-Treiber und der zugrundeliegenden Datenbank ab. Bei einigen Treibern können numerische Datentypen wie FLOAT oder DOUBLE andere Präzisionswerte liefern als erwartet.

Veraltete Ressource: In PHP 8.0 wurden ODBC-Ressourcen intern geändert; stellen Sie sicher, dass Ihr Code auf PHP 8+ kompatibel ist, falls Sie migrieren.