Start · Sprachen · PHP · Referenz · cubrid_col_size

cubrid_col_size

Funktion

Gibt die Anzahl der Elemente einer Collection-Spalte (SET, MULTISET, SEQUENCE) einer CUBRID-Zeile anhand der OID zurück.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_col_size(resource $conn_identifier, string $oid, string $attr_name): int|false

Beschreibung

cubrid_col_size() ermittelt, wie viele Elemente eine Collection-Spalte (d. h. eine Spalte vom Typ SET, MULTISET oder SEQUENCE) in einer bestimmten Zeile eines CUBRID-Datenbankeintrags enthält. Die Zeile wird dabei über ihre OID (Object Identifier) adressiert.

Diese Funktion ist vor allem dann nützlich, wenn Sie wissen möchten, wie viele Werte in einer Collection-Spalte gespeichert sind, bevor Sie diese einzeln abrufen oder verarbeiten – etwa um Schleifen korrekt zu dimensionieren oder Abfragen gezielt zu steuern.

Eine OID erhalten Sie in CUBRID typischerweise über cubrid_get_object_attr() oder indem Sie bei einer Abfrage das Pseudo-Attribut db_object mit abfragen. Stellen Sie sicher, dass die angegebene Spalte tatsächlich eine Collection ist, da die Funktion sonst einen Fehler zurückgeben kann.

Parameter

Name Typ Default Beschreibung
$conn_identifier Pflicht resource Die CUBRID-Verbindungsressource, die von cubrid_connect() oder cubrid_connect_with_url() zurückgegeben wurde.
$oid Pflicht string Die OID (Object Identifier) der Zeile, deren Collection-Spalte ausgewertet werden soll. Z. B. '@620|1|0'.
$attr_name Pflicht string Der Name der Collection-Spalte (Attribut), deren Elementanzahl ermittelt werden soll.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die Anzahl der Elemente in der Collection-Spalte als int zurück. Im Fehlerfall (z. B. ungültige OID, falscher Spaltenname oder kein Collection-Typ) wird false zurückgegeben.

Beispiele

Anzahl der Elemente einer SET-Spalte ermitteln

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

// Datensatz abfragen und OID holen
$req = cubrid_execute($conn, 'SELECT db_object, tags FROM articles WHERE id = 1', CUBRID_INCLUDE_OID);
if ($req) {
    $oid = cubrid_current_oid($req);
    echo 'OID: ' . $oid . PHP_EOL;

    // Anzahl der Elemente in der Collection-Spalte 'tags' ermitteln
    $size = cubrid_col_size($conn, $oid, 'tags');
    if ($size !== false) {
        echo 'Anzahl der Tags: ' . $size . PHP_EOL;
    } else {
        echo 'Fehler beim Abrufen der Collection-Größe.' . PHP_EOL;
    }

    cubrid_close_request($req);
}

cubrid_disconnect($conn);
?>
OID: @620|1|0 Anzahl der Tags: 5

Collection-Elemente gezielt per Schleife verarbeiten

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

$req = cubrid_execute($conn, 'SELECT db_object, keywords FROM documents WHERE doc_id = 42', CUBRID_INCLUDE_OID);
if ($req) {
    $oid = cubrid_current_oid($req);
    $size = cubrid_col_size($conn, $oid, 'keywords');

    if ($size !== false && $size > 0) {
        echo 'Schlüsselwörter (' . $size . ' Stück):' . PHP_EOL;
        // Einzelne Elemente per Index abrufen (1-basiert in CUBRID)
        for ($i = 1; $i <= $size; $i++) {
            $elem = cubrid_col_get($conn, $oid, 'keywords');
            // Hier würden Sie die Elemente weiterverarbeiten
        }
        $allKeywords = cubrid_col_get($conn, $oid, 'keywords');
        print_r($allKeywords);
    } else {
        echo 'Keine Schlüsselwörter vorhanden oder Fehler.' . PHP_EOL;
    }

    cubrid_close_request($req);
}

cubrid_disconnect($conn);
?>
Schlüsselwörter (3 Stück): Array ( [0] => PHP [1] => CUBRID [2] => Datenbank )

// Wichtig · Fallstricke

Nur für CUBRID-Collection-Typen: Diese Funktion funktioniert ausschließlich mit Spalten vom Typ SET, MULTISET oder SEQUENCE. Bei normalen Spaltentypen gibt sie false zurück.

OID-Modus erforderlich: Die OID ist nur verfügbar, wenn eine Abfrage mit dem Flag CUBRID_INCLUDE_OID ausgeführt wurde. Vergessen Sie dieses Flag, erhalten Sie keine gültige OID und die Funktion schlägt fehl.

Die CUBRID-Erweiterung ist in PHP nicht standardmäßig enthalten und muss separat installiert werden. Prüfen Sie mit extension_loaded('cubrid'), ob die Erweiterung verfügbar ist.