Signatur
Beschreibung
pg_field_prtlen() ermittelt die tatsächliche Länge des gespeicherten Wertes eines bestimmten Felds in einer bestimmten Ergebniszeile. Diese Länge entspricht der Anzahl der Zeichen, wie sie in der Textdarstellung des Feldes erscheinen würden – also nicht die interne Binärlänge, sondern die sichtbare (druckbare) Länge des Strings.
Die Funktion ist nützlich, wenn man prüfen möchte, wie viel Platz ein Feldwert bei der Ausgabe einnimmt, beispielsweise beim Formatieren von tabellarischen Ausgaben im Terminal oder für Plausibilitätsprüfungen von Eingabedaten aus der Datenbank.
Das Feld kann entweder als numerischer Index (0-basiert) oder als Feldname (String) angegeben werden. Ist der Feldwert NULL, gibt die Funktion 0 zurück.
Im Unterschied zu pg_field_size(), die die maximale Felddefinitionsgröße aus dem Schema zurückgibt, liefert pg_field_prtlen() die tatsächliche Länge des konkreten Datensatzes in der angegebenen Zeile.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | PgSql\Result | Ein PostgreSQL-Ergebnisobjekt, das von Funktionen wie pg_query() oder pg_execute() zurückgegeben wurde. |
|
| $row Pflicht | int | Die 0-basierte Zeilennummer im Ergebnis, aus der der Feldwert gelesen werden soll. | |
| $field Pflicht | mixed | Der 0-basierte numerische Feldindex (int) oder der Feldname (string), dessen Drucklänge ermittelt werden soll. |
Rückgabewert
NULL, wird 0 zurückgegeben. Bei einem Fehler wird false zurückgegeben.Beispiele
Drucklänge eines Feldes per Index ermitteln
<?php
$conn = pg_connect('host=localhost dbname=testdb user=postgres password=secret');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$result = pg_query($conn, "SELECT id, name, email FROM users LIMIT 3");
if (!$result) {
die('Abfrage fehlgeschlagen');
}
for ($row = 0; $row < pg_num_rows($result); $row++) {
$idLen = pg_field_prtlen($result, $row, 0); // Spalte 'id'
$nameLen = pg_field_prtlen($result, $row, 1); // Spalte 'name'
echo "Zeile $row — ID-Länge: $idLen, Name-Länge: $nameLen\n";
}
pg_free_result($result);
pg_close($conn);
Drucklänge per Feldname ermitteln und tabellarisch ausgeben
<?php
$conn = pg_connect('host=localhost dbname=testdb user=postgres password=secret');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$result = pg_query($conn, "SELECT vorname, nachname, email FROM kunden LIMIT 5");
if (!$result) {
die('Abfrage fehlgeschlagen');
}
$fields = ['vorname', 'nachname', 'email'];
$numRows = pg_num_rows($result);
for ($row = 0; $row < $numRows; $row++) {
foreach ($fields as $field) {
$len = pg_field_prtlen($result, $row, $field);
$val = pg_fetch_result($result, $row, $field);
echo sprintf("%-12s %-30s (Länge: %d)\n", $field . ':', $val ?? 'NULL', $len);
}
echo str_repeat('-', 50) . "\n";
}
pg_free_result($result);
pg_close($conn);
// Wichtig · Fallstricke
Achtung bei NULL-Werten: Enthält ein Feld den Datenbankwert NULL, gibt pg_field_prtlen() 0 zurück – identisch zum Verhalten bei einem leeren String. Verwende pg_field_is_null(), um zwischen NULL und einem tatsächlich leeren String zu unterscheiden.
Ab PHP 8.1 ist der Typ des Parameters result das Objekt PgSql\Result statt einer einfachen Ressource. Code, der ältere Ressource-Typen erwartet, muss entsprechend angepasst werden.
Die Funktion liefert die Textlänge der Felddarstellung. Bei numerischen Typen wie INTEGER oder FLOAT ist das die Länge der String-Repräsentation der Zahl, nicht die Byte-Länge des zugrunde liegenden Datentyps.