Start · Sprachen · PHP · Referenz · cubrid_lob2_new

cubrid_lob2_new

Funktion

Erstellt ein neues LOB-Objekt (BLOB oder CLOB) auf dem CUBRID-Server und gibt eine Ressource zurück.

seit PHP 8.4.1 Kategorie: db

Signatur

cubrid_lob2_new(resource $conn_identifier, string $type = "BLOB"): resource|false

Beschreibung

cubrid_lob2_new() erzeugt ein neues Large Object (LOB) auf dem CUBRID-Datenbankserver. LOBs werden verwendet, um sehr große Datenmengen – etwa Binärdateien (BLOB) oder große Texte (CLOB) – in der Datenbank zu speichern, ohne diese direkt in einer regulären Tabellenspalte ablegen zu müssen.

Der Parameter type bestimmt die Art des LOB-Objekts: "BLOB" (Binary Large Object) eignet sich für binäre Daten wie Bilder, Videos oder sonstige Dateien, während "CLOB" (Character Large Object) für große Textmengen vorgesehen ist.

Das zurückgegebene LOB-Ressource-Handle kann anschließend mit Funktionen wie cubrid_lob2_write(), cubrid_lob2_read(), cubrid_lob2_bind() oder cubrid_lob2_close() verwendet werden. Typischerweise wird ein neues LOB-Objekt erzeugt, mit Daten befüllt und danach per cubrid_lob2_bind() an einen vorbereiteten SQL-Statement gebunden.

Nach der Verwendung sollte das LOB-Objekt mit cubrid_lob2_close() geschlossen werden, um Serverressourcen freizugeben.

Parameter

Name Typ Default Beschreibung
$conn_identifier Pflicht resource Eine gültige CUBRID-Verbindungsressource, die zuvor mit cubrid_connect() oder cubrid_connect_with_url() geöffnet wurde.
$type string BLOB Der Typ des LOB-Objekts: "BLOB" für binäre Daten oder "CLOB" für Zeichendaten. Groß-/Kleinschreibung wird nicht berücksichtigt.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine LOB-Ressource zurück, die für weitere LOB-Operationen genutzt werden kann. Im Fehlerfall wird false zurückgegeben.

Beispiele

BLOB aus einer Datei erstellen und in die Datenbank einfügen

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

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

// Neues BLOB-Objekt erstellen
$lob = cubrid_lob2_new($conn, 'BLOB');

if ($lob === false) {
    die('LOB-Erstellung fehlgeschlagen: ' . cubrid_error_msg());
}

// Binärdaten aus einer Datei in das BLOB schreiben
$fileData = file_get_contents('/pfad/zur/datei.jpg');
cubrid_lob2_write($lob, $fileData);

// Vorbereiteten SQL-Statement erstellen und LOB binden
$req = cubrid_prepare($conn, 'INSERT INTO bilder (name, bild) VALUES (?, ?)');
cubrid_bind($req, 1, 'meinbild.jpg');
cubrid_lob2_bind($req, 2, $lob, 'BLOB');

cubrid_execute($req);

// Ressourcen freigeben
cubrid_lob2_close($lob);
cubrid_close_request($req);
cubrid_disconnect($conn);

echo 'Bild erfolgreich gespeichert.';
?>
Bild erfolgreich gespeichert.

CLOB mit großem Textinhalt anlegen

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

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

// Neues CLOB-Objekt erstellen
$clob = cubrid_lob2_new($conn, 'CLOB');

if ($clob === false) {
    die('LOB-Erstellung fehlgeschlagen: ' . cubrid_error_msg());
}

// Großen Textinhalt in das CLOB schreiben
$text = str_repeat('Dies ist ein sehr langer Textinhalt. ', 1000);
cubrid_lob2_write($clob, $text);

// An SQL-Statement binden und ausführen
$req = cubrid_prepare($conn, 'INSERT INTO dokumente (titel, inhalt) VALUES (?, ?)');
cubrid_bind($req, 1, 'Langes Dokument');
cubrid_lob2_bind($req, 2, $clob, 'CLOB');

cubrid_execute($req);

cubrid_lob2_close($clob);
cubrid_close_request($req);
cubrid_disconnect($conn);

echo 'Dokument erfolgreich gespeichert.';
?>
Dokument erfolgreich gespeichert.

// Wichtig · Fallstricke

Ressourcenverwaltung: Vergessen Sie nicht, LOB-Ressourcen nach der Verwendung mit cubrid_lob2_close() zu schließen. Nicht geschlossene LOB-Objekte können zu Speicher- und Ressourcenlecks auf dem Datenbankserver führen.

Transaktion: LOB-Operationen sollten innerhalb einer Transaktion durchgeführt werden, um die Datenkonsistenz zu gewährleisten. Verwenden Sie cubrid_set_autocommit() oder manuelle BEGIN/COMMIT-Anweisungen.

Diese Funktion setzt eine aktive CUBRID-Verbindung voraus und ist nur verfügbar, wenn die CUBRID-PHP-Erweiterung installiert ist.