Signatur
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
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);
?>
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);
?>
// 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.