Signatur
Beschreibung
odbc_field_scale liefert die Skalierung eines bestimmten Feldes in einem ODBC-Ergebnis-Statement. Die Skalierung beschreibt, wie viele Nachkommastellen für numerische Datentypen (z. B. DECIMAL, NUMERIC) im Datenbankschema definiert sind.
Diese Funktion ist vor allem dann nützlich, wenn Metadaten über Ergebnisspalten benötigt werden – etwa beim dynamischen Verarbeiten von Abfrageergebnissen, bei der Entwicklung von Datenbankabstraktionsschichten oder wenn Ausgabeformate präzise an den Datenbanktyp angepasst werden sollen.
Der Parameter field ist 1-basiert, d. h. die erste Spalte hat den Index 1. Für Felder ohne sinnvolle Skalierung (z. B. VARCHAR) gibt die Funktion typischerweise 0 zurück.
Voraussetzung ist ein gültiges Statement-Handle, das zuvor mit Funktionen wie odbc_exec oder odbc_prepare/odbc_execute erzeugt wurde.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $statement Pflicht | resource | Ein gültiges ODBC-Statement-Handle, das z. B. von odbc_exec() oder odbc_prepare() zurückgegeben wurde. |
|
| $field Pflicht | int | Die 1-basierte Feldnummer der Spalte, für die die Skalierung ermittelt werden soll. Die erste Spalte hat den Index 1. |
Rückgabewert
int zurück. Bei einem Fehler oder einem ungültigen Feldindex wird false zurückgegeben.Beispiele
Skalierung aller Felder eines ODBC-Ergebnisses ausgeben
<?php
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$result = odbc_exec($conn, 'SELECT id, preis, name FROM produkte');
if (!$result) {
die('Abfrage fehlgeschlagen');
}
$anzahlFelder = odbc_num_fields($result);
for ($i = 1; $i <= $anzahlFelder; $i++) {
$feldName = odbc_field_name($result, $i);
$skalierung = odbc_field_scale($result, $i);
echo "Feld: $feldName — Nachkommastellen: $skalierung\n";
}
odbc_close($conn);
?>
Skalierung zur dynamischen Zahlenformatierung nutzen
<?php
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');
$result = odbc_exec($conn, 'SELECT betrag FROM rechnungen');
$scale = odbc_field_scale($result, 1);
if (odbc_fetch_row($result)) {
$wert = odbc_result($result, 1);
$formatiert = number_format((float)$wert, $scale, ',', '.');
echo "Betrag: $formatiert\n";
}
odbc_close($conn);
?>
// Wichtig · Fallstricke
Hinweis zur Kompatibilität: Das Verhalten von odbc_field_scale kann je nach verwendetem ODBC-Treiber und Datenbanksystem leicht variieren. Manche Treiber geben für Felder ohne definierte Skalierung 0 zurück, andere null oder negative Werte – prüfen Sie daher den Rückgabewert sorgfältig.
Ab PHP 8.0 wurden viele ODBC-Ressourcen intern überarbeitet. Stellen Sie sicher, dass das Statement-Handle noch aktiv ist, bevor Sie Metadatenfunktionen aufrufen.