Signatur
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
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);
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';
}
// 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.