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