Start · Sprachen · PHP · Referenz · cubrid_set_add

cubrid_set_add

Funktion

Fügt ein Element zu einer Set-Spalte eines CUBRID-Datensatzes anhand der OID hinzu.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_set_add(resource $conn_identifier, string $oid, string $attr_name, string $set_element): bool

Beschreibung

cubrid_set_add ermöglicht es, einen einzelnen Wert zu einer Spalte vom Typ SET, MULTISET oder SEQUENCE in einer CUBRID-Datenbank hinzuzufügen, ohne den gesamten Datensatz neu schreiben zu müssen. Die Identifikation des Datensatzes erfolgt über seine OID (Object Identifier).

Diese Funktion ist besonders nützlich, wenn man mit collection-artigen Spalten in CUBRID arbeitet und einzelne Elemente effizient hinzufügen möchte, ohne vorher den kompletten Spalteninhalt lesen, verändern und zurückschreiben zu müssen. Dies spart Netzwerk- und Verarbeitungsaufwand.

Die OID kann beispielsweise durch cubrid_insert_id oder aus einem vorherigen cubrid_fetch-Aufruf gewonnen werden. Der hinzuzufügende Wert wird immer als Zeichenkette übergeben — für numerische oder andere Typen muss die entsprechende String-Repräsentation verwendet werden.

Die Funktion arbeitet direkt auf dem Server, sodass keine erneute vollständige SELECT/UPDATE-Sequenz notwendig ist. Sie eignet sich daher besonders für Szenarien, in denen häufig einzelne Elemente zu Mengen hinzugefügt werden müssen.

Parameter

Name Typ Default Beschreibung
$conn_identifier Pflicht resource Die aktive CUBRID-Verbindungsressource, die von cubrid_connect oder cubrid_connect_with_url zurückgegeben wurde.
$oid Pflicht string Die OID (Object Identifier) des Datensatzes, dessen Set-Spalte geändert werden soll. Hat die Form @pageid|slotid|volid, z. B. @620|1|0.
$attr_name Pflicht string Der Name der Set-Spalte (Attribut) in der Tabelle, zu der das Element hinzugefügt werden soll.
$set_element Pflicht string Der Wert, der zur Set-Spalte hinzugefügt werden soll. Wird als Zeichenkette übergeben; numerische Werte müssen entsprechend als String dargestellt werden.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn das Element erfolgreich hinzugefügt wurde, oder false im Fehlerfall (z. B. ungültige OID, nicht vorhandenes Attribut oder Verbindungsproblem).

Beispiele

Element zu einer SET-Spalte hinzufügen

<?php
// Verbindung zur CUBRID-Datenbank herstellen
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
    die('Verbindung fehlgeschlagen: ' . cubrid_error());
}

// OID eines vorhandenen Datensatzes (z. B. aus vorherigem INSERT oder SELECT)
$oid = '@620|1|0';

// Element 'PHP' zur SET-Spalte 'languages' des Datensatzes hinzufügen
$result = cubrid_set_add($conn, $oid, 'languages', 'PHP');

if ($result) {
    echo "Element erfolgreich hinzugefügt.\n";
} else {
    echo "Fehler beim Hinzufügen: " . cubrid_error($conn) . "\n";
}

cubrid_disconnect($conn);
?>
Element erfolgreich hinzugefügt.

OID nach INSERT ermitteln und Set-Spalte befüllen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
    die('Verbindung fehlgeschlagen.');
}

// Neuen Datensatz einfügen
$req = cubrid_execute($conn, "INSERT INTO developer (name, languages) VALUES ('Alice', {});");
if (!$req) {
    die('INSERT fehlgeschlagen: ' . cubrid_error($conn));
}

// OID des zuletzt eingefügten Datensatzes abrufen
$oid = cubrid_insert_id($conn);
echo "Datensatz-OID: $oid\n";

// Mehrere Sprachen zur SET-Spalte hinzufügen
$languages = ['PHP', 'Python', 'JavaScript'];
foreach ($languages as $lang) {
    if (cubrid_set_add($conn, $oid, 'languages', $lang)) {
        echo "'$lang' hinzugefügt.\n";
    } else {
        echo "Fehler beim Hinzufügen von '$lang'.\n";
    }
}

cubrid_disconnect($conn);
?>
Datensatz-OID: @620|1|0 'PHP' hinzugefügt. 'Python' hinzugefügt. 'JavaScript' hinzugefügt.

// Wichtig · Fallstricke

Hinweis zur Typkonsistenz: Der als set_element übergebene String muss zum deklarierten Datentyp der Set-Spalte in der CUBRID-Tabelle kompatibel sein. Bei Typ-Inkonsistenzen kann die Funktion false zurückgeben, ohne eine aussagekräftige Fehlermeldung zu liefern — prüfen Sie in diesem Fall den Spaltentyp mit cubrid_schema.

Duplikate: Bei Spalten vom Typ SET werden Duplikate automatisch ignoriert; bei MULTISET hingegen werden gleiche Werte mehrfach gespeichert. Beachten Sie diesen Unterschied bei der Wahl des Spaltentyps.

Transaktionen: Operationen über OID-basierte Funktionen wie cubrid_set_add unterliegen dem üblichen Transaktionsmanagement von CUBRID. Bei Verwendung im Auto-Commit-Modus wird jede Änderung sofort festgeschrieben.