Start · Sprachen · PHP · Referenz · db2_field_width

db2_field_width

Funktion

Liefert die maximale Anzahl an Bytes, die der aktuelle Wert einer Spalte im Ergebnis eines DB2-Statements belegen kann.

seit PHP 5.1.0 Kategorie: db

Signatur

db2_field_width(resource $stmt, int|string $column): int|false

Beschreibung

db2_field_width() gibt die maximale Breite (in Bytes) zurück, die eine Spalte im Ergebnis-Set eines vorbereiteten oder ausgeführten DB2-Statements haben kann. Diese Information ist nützlich, um Puffergrößen vorauszuplanen oder die Struktur eines Abfrageergebnisses zur Laufzeit zu analysieren.

Die Spalte kann entweder über ihren nullbasierten Index (als int) oder über ihren Namen (als string) referenziert werden. Der Index beginnt bei 0 für die erste Spalte.

Typischerweise wird diese Funktion zusammen mit anderen Metadaten-Funktionen wie db2_field_name(), db2_field_type() und db2_num_fields() eingesetzt, um die Struktur eines Ergebnis-Sets dynamisch zu inspizieren – beispielsweise beim Erstellen generischer Datenbankwerkzeuge oder beim Export von Daten.

Beachte, dass die zurückgegebene Breite die maximale Kapazität des Feldes gemäß Datenbankschema widerspiegelt und nicht die tatsächliche Länge des aktuell gespeicherten Wertes.

Parameter

Name Typ Default Beschreibung
$stmt Pflicht resource Ein gültiges Statement-Handle, das durch db2_prepare() oder db2_exec() erzeugt und erfolgreich ausgeführt wurde.
$column Pflicht int|string Der nullbasierte Index der Spalte als int (z. B. 0 für die erste Spalte) oder der Spaltenname als string.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die maximale Breite der Spalte in Bytes als int zurück. Bei einem ungültigen Statement-Handle, einem nicht existierenden Spaltenindex oder -namen wird false zurückgegeben.

Beispiele

Spaltenbreite per Index abfragen

<?php
$conn = db2_connect('SAMPLE', 'db2user', 'secret');
if ($conn) {
    $sql = 'SELECT empno, firstnme, salary FROM employee';
    $stmt = db2_exec($conn, $sql);
    if ($stmt) {
        $numCols = db2_num_fields($stmt);
        for ($i = 0; $i < $numCols; $i++) {
            $name  = db2_field_name($stmt, $i);
            $width = db2_field_width($stmt, $i);
            echo "Spalte $i: $name – max. Breite: $width Byte\n";
        }
    }
    db2_close($conn);
}
Spalte 0: EMPNO – max. Breite: 6 Byte Spalte 1: FIRSTNME – max. Breite: 12 Byte Spalte 2: SALARY – max. Breite: 9 Byte

Spaltenbreite per Spaltenname abfragen

<?php
$conn = db2_connect('SAMPLE', 'db2user', 'secret');
if ($conn) {
    $sql = 'SELECT firstnme, lastname FROM employee';
    $stmt = db2_exec($conn, $sql);
    if ($stmt) {
        $width = db2_field_width($stmt, 'LASTNAME');
        if ($width !== false) {
            echo "Maximale Breite von LASTNAME: $width Byte\n";
        } else {
            echo "Spalte nicht gefunden oder Fehler aufgetreten.\n";
        }
    }
    db2_close($conn);
}
Maximale Breite von LASTNAME: 15 Byte

// Wichtig · Fallstricke

Wichtig: Die Funktion ist Teil der ibm_db2-Erweiterung und steht nur zur Verfügung, wenn diese Extension installiert und aktiviert ist. Sie arbeitet ausschließlich mit IBM DB2-, Cloudscape- und Apache Derby-Datenbanken.

Die Breite bezieht sich auf die im Datenbankschema definierte Maximalbreite der Spalte, nicht auf die Länge eines konkreten Feldwerts im aktuellen Datensatz. Um die tatsächliche Länge eines zurückgegebenen Werts zu ermitteln, sollte stattdessen strlen() auf den abgerufenen Wert angewendet werden.

Bei Spalten mit variablen Zeichenlängen wie VARCHAR entspricht die zurückgegebene Breite der maximalen definierten Länge des Feldes.