Signatur
Beschreibung
cubrid_new_glo() erzeugt eine neue Instanz einer GLO-Klasse in der CUBRID-Datenbank. GLO steht für Generalized Large Object und ermöglicht die Speicherung großer Binärdaten (z. B. Bilder, Dokumente) direkt in der Datenbank. Der Inhalt der angegebenen Datei wird dabei in das neue GLO-Objekt geladen.
Die Funktion gibt bei Erfolg einen OID-String (Object Identifier) zurück, der das neu erstellte GLO-Objekt eindeutig in der Datenbank identifiziert. Dieser OID kann anschließend verwendet werden, um das Objekt in einer Tabellenspalte zu referenzieren oder weiter zu bearbeiten.
GLO-Klassen müssen in der CUBRID-Datenbank zuvor definiert worden sein und von der eingebauten glo-Klasse erben. Diese Funktion ist nützlich, wenn große Binärobjekte nicht über herkömmliche SQL-BLOB-Felder, sondern über das objektorientierte GLO-Modell von CUBRID verwaltet werden sollen.
Hinweis: Die GLO-Funktionalität war in älteren CUBRID-Versionen verfügbar, wurde jedoch in neueren Versionen als veraltet markiert oder entfernt. Prüfe die Kompatibilität mit der eingesetzten CUBRID-Version.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $conn_identifier Pflicht | resource | Die CUBRID-Verbindungsressource, die von cubrid_connect() oder cubrid_connect_with_url() zurückgegeben wurde. |
|
| $class_name Pflicht | string | Der Name der GLO-Klasse in der CUBRID-Datenbank, in der das neue Objekt erzeugt werden soll. Diese Klasse muss von der eingebauten glo-Klasse erben. |
|
| $file_name Pflicht | string | Der Pfad zur lokalen Datei, deren Inhalt in das neu erstellte GLO-Objekt geladen wird. Die Datei muss auf dem Server lesbar sein. |
Rückgabewert
false zurückgegeben.Beispiele
GLO-Instanz erstellen und OID ausgeben
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . cubrid_error());
}
// Voraussetzung: Klasse 'image_glo' existiert in der DB und erbt von 'glo'
$file_path = '/var/www/uploads/foto.jpg';
$oid = cubrid_new_glo($conn, 'image_glo', $file_path);
if ($oid === false) {
echo 'Fehler beim Erstellen des GLO-Objekts: ' . cubrid_error($conn);
} else {
echo 'GLO-Objekt erstellt. OID: ' . $oid;
// OID kann nun in einer Tabellenspalte gespeichert werden
$sql = "INSERT INTO product_images (image) VALUES ('" . $oid . "')";
cubrid_execute($conn, $sql);
}
cubrid_disconnect($conn);
?>
Fehlerbehandlung beim Erstellen eines GLO-Objekts
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$file_path = '/tmp/dokument.pdf';
if (!file_exists($file_path)) {
die('Datei nicht gefunden: ' . $file_path);
}
$oid = cubrid_new_glo($conn, 'document_glo', $file_path);
if ($oid !== false) {
echo 'Dokument gespeichert als GLO mit OID: ' . $oid . PHP_EOL;
} else {
echo 'GLO konnte nicht erstellt werden.' . PHP_EOL;
echo 'Fehlercode: ' . cubrid_errno($conn) . PHP_EOL;
echo 'Fehlermeldung: ' . cubrid_error($conn) . PHP_EOL;
}
cubrid_disconnect($conn);
?>
// Wichtig · Fallstricke
Veraltet: Die GLO-Unterstützung wurde in neueren CUBRID-Versionen (ab Version 9.0) entfernt. Diese Funktion sollte nur in Projekten verwendet werden, die ältere CUBRID-Versionen einsetzen. Für moderne CUBRID-Installationen empfiehlt sich die Verwendung von BLOB/CLOB-Datentypen über die Standard-SQL-Schnittstelle.
Der zurückgegebene OID-String ist datenbankspezifisch und darf nicht ohne weiteres zwischen verschiedenen Datenbankinstanzen ausgetauscht werden. Stelle sicher, dass die referenzierte GLO-Klasse korrekt definiert und von der internen glo-Klasse abgeleitet ist, bevor diese Funktion aufgerufen wird.
Aus Sicherheitsgründen sollte der Dateipfad niemals direkt aus Benutzereingaben übernommen werden, da dies zu Path-Traversal-Angriffen führen kann. Validiere und bereinige alle Eingaben, bevor sie als Dateiname verwendet werden.