Start · Sprachen · PHP · Referenz · cubrid_col_get

cubrid_col_get

Funktion

Gibt den Inhalt einer Collection-Spalte (SET, MULTISET oder SEQUENCE) aus einer CUBRID-Datenbank anhand der OID zurück.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_col_get(resource $conn_identifier, string $oid, string $attr_name): array|false

Beschreibung

cubrid_col_get() liest den Inhalt einer Collection-Spalte (SET, MULTISET oder SEQUENCE) aus einem CUBRID-Datensatz, der durch seine OID (Object Identifier) eindeutig identifiziert wird. Das Ergebnis wird als numerisch indiziertes Array zurückgegeben, wobei jedes Element einem Eintrag der Collection entspricht.

Collection-Typen sind ein besonderes Merkmal von CUBRID: Sie ermöglichen es, mehrere Werte in einer einzelnen Spalte zu speichern. cubrid_col_get() ist die direkte Methode, um auf diese Werte zuzugreifen, ohne eine vollständige Zeilen-Abfrage durchführen zu müssen.

Der Parameter oid muss eine gültige OID-Zeichenkette im Format @classname|page_id|slot_id|volume_id sein, wie sie beispielsweise von cubrid_current_oid() geliefert wird. Die Verbindungsressource muss auf eine aktive CUBRID-Verbindung verweisen.

Diese Funktion ist besonders nützlich, wenn gezielt einzelne Collection-Attribute eines Objekts abgerufen werden sollen, ohne das gesamte Objekt laden zu müssen. Bei einem Fehler gibt sie false zurück.

Parameter

Name Typ Default Beschreibung
$conn_identifier Pflicht resource Eine aktive CUBRID-Verbindungsressource, die mit cubrid_connect() oder cubrid_connect_with_url() erzeugt wurde.
$oid Pflicht string Die OID (Object Identifier) des Datensatzes, dessen Collection-Spalte gelesen werden soll. Die OID hat die Form @klassenname|seite|slot|volumen und kann z. B. mit cubrid_current_oid() ermittelt werden.
$attr_name Pflicht string Der Name der Collection-Spalte (Attribut) des angegebenen CUBRID-Objekts, deren Inhalt abgerufen werden soll.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein numerisch indiziertes Array zurück, das alle Elemente der Collection-Spalte enthält. Im Fehlerfall (z. B. ungültige OID, nicht existierendes Attribut oder Verbindungsfehler) wird false zurückgegeben.

Beispiele

Collection-Spalte über OID auslesen

<?php
// Verbindung zur CUBRID-Datenbank herstellen
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

if (!$conn) {
    die('Verbindungsfehler: ' . cubrid_error());
}

// Abfrage, um die OID eines Datensatzes zu erhalten
$result = cubrid_execute($conn, 'SELECT * FROM tbl_example WHERE id = 1', CUBRID_INCLUDE_OID);

if ($result) {
    // OID des aktuellen Datensatzes abrufen
    cubrid_move_cursor($result, 1, CUBRID_CURSOR_FIRST);
    $oid = cubrid_current_oid($result);

    // Inhalt der Collection-Spalte 'tags' abrufen
    $tags = cubrid_col_get($conn, $oid, 'tags');

    if ($tags !== false) {
        echo "Inhalt der Collection-Spalte 'tags':" . PHP_EOL;
        foreach ($tags as $index => $wert) {
            echo "[$index] => $wert" . PHP_EOL;
        }
    } else {
        echo 'Fehler beim Abrufen der Collection-Spalte.';
    }

    cubrid_close_request($result);
}

cubrid_disconnect($conn);
?>
Inhalt der Collection-Spalte 'tags': [0] => PHP [1] => CUBRID [2] => Datenbank

Anzahl der Elemente in einer Collection ermitteln

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

$result = cubrid_execute($conn, 'SELECT * FROM produkte WHERE id = 5', CUBRID_INCLUDE_OID);
cubrid_move_cursor($result, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($result);

// Anzahl der Elemente via cubrid_col_size oder manuell zählen
$kategorien = cubrid_col_get($conn, $oid, 'kategorien');

if ($kategorien !== false) {
    $anzahl = count($kategorien);
    echo "Das Produkt gehört zu $anzahl Kategorie(n):" . PHP_EOL;
    echo implode(', ', $kategorien) . PHP_EOL;
}

cubrid_close_request($result);
cubrid_disconnect($conn);
?>
Das Produkt gehört zu 3 Kategorie(n): Elektronik, Computer, Zubehör

// Wichtig · Fallstricke

Voraussetzung: Die Abfrage, mit der die OID ermittelt wird, muss mit dem Flag CUBRID_INCLUDE_OID ausgeführt worden sein, damit cubrid_current_oid() eine gültige OID liefert.

Typ-Prüfung: cubrid_col_get() funktioniert nur mit Spalten vom Typ SET, MULTISET oder SEQUENCE. Bei anderen Spaltentypen wird false zurückgegeben.

Fehlerbehandlung: Der Rückgabewert sollte stets mit === false geprüft werden, da ein leeres Array ([]) bei einer leeren Collection ein gültiges Ergebnis darstellt.