Start · Sprachen · PHP · Referenz · cubrid_fetch_lengths

cubrid_fetch_lengths

Funktion

Gibt ein Array mit den Bytelängen der Feldwerte der aktuellen Ergebniszeile eines CUBRID-Abfrageergebnisses zurück.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_fetch_lengths(resource $result): array|false

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

Typ
array|false
Beschreibung
Gibt ein numerisch indiziertes Array zurück, das die Bytelängen der Feldwerte der aktuellen Zeile enthält. Für 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);
?>
Feld 0: Wert = 'Max Mustermann', Länge = 14 Byte Feld 1: Wert = 'max@example.com', Länge = 15 Byte Feld 2: Wert = '30', Länge = 2 Byte

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);
?>
Name: Anna Schmidt | Telefon: +49 30 12345 Name: Tom Bauer | Telefon: (kein Eintrag) Name: (leer) | Telefon: +49 89 98765

// 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.