Start · Sprachen · PHP · Referenz · db2_field_display_size

db2_field_display_size

Funktion

Liefert die maximale Anzeigebreite (in Byte) einer Spalte eines DB2-Ergebnissatzes.

seit PHP 5.1.0 Kategorie: db

Signatur

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

Beschreibung

db2_field_display_size() gibt die maximale Anzahl von Bytes zurück, die benötigt werden, um den Wert einer bestimmten Spalte im Ergebnis einer DB2-Abfrage darzustellen. Diese Information ist nützlich, wenn Spaltenbreiten für die Ausgabeformatierung oder die Dimensionierung von Puffern berechnet werden sollen.

Die Funktion gehört zur IBM DB2-, Cloudscape- und Apache Derby-Erweiterung (ibm_db2) und setzt voraus, dass ein gültiges Statement-Handle existiert, das durch db2_exec() oder db2_execute() erzeugt wurde.

Die Spalte kann entweder über ihren nullbasierten numerischen Index oder über ihren Namen referenziert werden. Besonders bei dynamisch erzeugten Ergebnissätzen ist die Nutzung des Spaltennamens empfehlenswert, um Indexverschiebungen zu vermeiden.

Der zurückgegebene Wert hängt vom Datentyp der Spalte ab: Bei Zeichenketten gibt er die maximale Byte-Länge an; bei numerischen Typen entspricht er der Darstellungsbreite inklusive Vorzeichen und Dezimalpunkt.

Parameter

Name Typ Default Beschreibung
$stmt Pflicht resource Ein gültiges Statement-Handle, das durch db2_exec(), db2_execute() oder eine ähnliche DB2-Funktion zurückgegeben wurde.
$column Pflicht int|string Entweder der nullbasierte numerische Index der Spalte (int) oder der Name der Spalte (string).

Rückgabewert

Typ
int|false
Beschreibung
Gibt die maximale Anzeigebreite der Spalte in Byte als int zurück. Bei einem Fehler (z. B. ungültiger Spaltenname oder -index) wird false zurückgegeben.

Beispiele

Anzeigebreite per Spaltenindex abfragen

<?php
$conn = db2_connect('SAMPLE', 'db2user', 'secret');
if ($conn) {
    $stmt = db2_exec($conn, 'SELECT id, name, description FROM products');
    if ($stmt) {
        // Anzeigebreite der zweiten Spalte (index 1 = 'name') abfragen
        $displaySize = db2_field_display_size($stmt, 1);
        echo 'Maximale Anzeigebreite von Spalte 1: ' . $displaySize . ' Byte';
    }
    db2_close($conn);
}
Maximale Anzeigebreite von Spalte 1: 100 Byte

Anzeigebreite per Spaltenname abfragen

<?php
$conn = db2_connect('SAMPLE', 'db2user', 'secret');
if ($conn) {
    $stmt = db2_exec($conn, 'SELECT id, name, price FROM products');
    if ($stmt) {
        $columns = ['id', 'name', 'price'];
        foreach ($columns as $col) {
            $size = db2_field_display_size($stmt, $col);
            if ($size !== false) {
                echo 'Spalte "' . $col . '": max. ' . $size . " Byte\n";
            } else {
                echo 'Spalte "' . $col . '" nicht gefunden.' . "\n";
            }
        }
    }
    db2_close($conn);
}
Spalte "id": max. 11 Byte Spalte "name": max. 100 Byte Spalte "price": max. 23 Byte

// Wichtig · Fallstricke

Voraussetzung: Die PHP-Erweiterung ibm_db2 muss installiert und aktiviert sein. Diese ist standardmäßig nicht in PHP enthalten und muss separat über PECL installiert werden.

Die Funktion liefert die Anzeigebreite, nicht die interne Speichergröße der Spalte. Für die tatsächliche Byte-Länge des gespeicherten Wertes sollte db2_field_precision() oder db2_field_width() genutzt werden.

Bei Multibyte-Zeichensätzen (z. B. UTF-8) kann die Anzeigebreite in Byte größer sein als die Anzahl der darstellbaren Zeichen, da einzelne Zeichen mehrere Bytes belegen können.