Signatur
Beschreibung
cubrid_fetch_lengths() liest die Längen (in Byte) aller Feldwerte der aktuellen Zeile eines CUBRID-Abfrageergebnisses aus. Die zurückgegebenen Werte entsprechen der tatsächlichen Datenlänge der jeweiligen Felder, nicht der deklarierten Spaltenlänge im Schema.
Die Funktion ist besonders nützlich, wenn man nach einem Aufruf von cubrid_fetch_row() oder cubrid_fetch_array() die genaue Bytegröße der gelesenen Werte benötigt – etwa um Puffergrößen korrekt zu dimensionieren oder um zu prüfen, ob ein Feld leer ist (0 Bytes).
Das Ergebnis ist ein numerisch indiziertes Array, dessen Indizes den Spaltenreihenfolgen in der SELECT-Abfrage entsprechen. Für NULL-Werte wird 0 zurückgegeben. Die Funktion arbeitet ausschließlich mit einem gültigen, aktiven CUBRID-Ergebnis-Resource, wie sie von cubrid_execute() oder cubrid_query() geliefert wird.
Diese Funktion ist das CUBRID-Äquivalent zu mysql_fetch_lengths() und verhält sich in ihrer Semantik ähnlich.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | resource | Ein gültiges CUBRID-Ergebnis-Handle, wie es von cubrid_execute() oder cubrid_query() zurückgegeben wird. |
Rückgabewert
NULL-Felder wird 0 zurückgegeben. Bei einem Fehler oder wenn kein gültiges Ergebnis vorliegt, wird false zurückgegeben.Beispiele
Feldlängen nach cubrid_fetch_row() ausgeben
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindungsfehler: ' . cubrid_error());
}
$req = cubrid_execute($conn, "SELECT name, email, age FROM users LIMIT 1");
if ($req) {
$row = cubrid_fetch_row($req);
if ($row) {
$lengths = cubrid_fetch_lengths($req);
foreach ($lengths as $index => $length) {
echo "Feld $index: Wert = '{$row[$index]}', Länge = $length Byte\n";
}
}
cubrid_close_request($req);
}
cubrid_disconnect($conn);
?>
NULL-Felder anhand der Länge 0 erkennen
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$req = cubrid_execute($conn, "SELECT name, phone FROM contacts LIMIT 3");
if ($req) {
while ($row = cubrid_fetch_row($req)) {
$lengths = cubrid_fetch_lengths($req);
$name = $lengths[0] > 0 ? $row[0] : '(leer)';
$phone = $lengths[1] > 0 ? $row[1] : '(kein Eintrag)';
echo "Name: $name | Telefon: $phone\n";
}
cubrid_close_request($req);
}
cubrid_disconnect($conn);
?>
// Wichtig · Fallstricke
Achtung: cubrid_fetch_lengths() muss nach einem Aufruf von cubrid_fetch_row() oder cubrid_fetch_array() aufgerufen werden, da es sich auf den internen Zeiger der aktuellen Zeile stützt. Ein Aufruf ohne vorheriges Fetch liefert false.
Bei Multibyte-Zeichensätzen (z. B. UTF-8) gibt die Funktion die Bytelänge zurück, nicht die Zeichenanzahl. Ein UTF-8-Zeichen kann 1–4 Byte belegen. Für die Zeichenanzahl sollte stattdessen mb_strlen() auf den Feldwert angewendet werden.
Die CUBRID-PHP-Erweiterung muss installiert und aktiviert sein (extension=cubrid.so bzw. cubrid.dll). Die Funktion ist nicht Teil der Standard-PHP-Distribution.