Start · Sprachen · PHP · Referenz · odbc_field_scale

odbc_field_scale

Funktion

Gibt die Anzahl der Nachkommastellen (Skalierung) eines Feldes in einem ODBC-Ergebnis zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

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

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

Typ
int|false
Beschreibung
Gibt die Anzahl der Nachkommastellen des angegebenen Feldes als 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);
?>
Feld: id — Nachkommastellen: 0 Feld: preis — Nachkommastellen: 2 Feld: name — Nachkommastellen: 0

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);
?>
Betrag: 1.234,56

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