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