Signatur
Beschreibung
cubrid_lob_get wird verwendet, um Large Object (LOB)-Daten — also BLOB (Binary Large Object) und CLOB (Character Large Object) — aus einer CUBRID-Datenbank abzurufen. Die Funktion führt intern eine SQL-Abfrage aus und liefert ein Array von LOB-Ressourcen zurück, die anschließend mit weiteren CUBRID-LOB-Funktionen weiterverarbeitet werden können.
LOB-Daten eignen sich für die Speicherung großer Binärdaten (z. B. Bilder, Dokumente) oder umfangreicher Textinhalte direkt in der Datenbank. Da diese Daten zu groß sein können, um sie vollständig in den Speicher zu laden, arbeitet CUBRID mit speziellen LOB-Handles, die einen kontrollierten Zugriff ermöglichen.
Nach der Verwendung sollten die LOB-Handles mit cubrid_lob_close geschlossen werden, um Ressourcen freizugeben. Die eigentlichen Daten können anschließend z. B. mit cubrid_lob_export in eine Datei gespeichert oder mit cubrid_lob_size in ihrer Größe abgefragt werden.
Diese Funktion ist Teil der CUBRID-spezifischen PHP-Erweiterung und steht nur zur Verfügung, wenn die cubrid-Extension geladen ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $conn_identifier Pflicht | resource | Eine gültige CUBRID-Verbindungsressource, die zuvor mit cubrid_connect oder cubrid_connect_with_url erstellt wurde. |
|
| $sql Pflicht | string | Die auszuführende SQL-Abfrage (SELECT-Statement), die mindestens eine BLOB- oder CLOB-Spalte zurückliefert. |
Rückgabewert
false zurückgegeben.Beispiele
BLOB-Daten aus CUBRID abrufen und exportieren
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . cubrid_error());
}
// LOB-Daten (BLOB) aus der Tabelle abrufen
$lobs = cubrid_lob_get($conn, 'SELECT file_data FROM documents WHERE id = 1');
if ($lobs === false) {
die('Fehler beim Abrufen der LOB-Daten: ' . cubrid_error($conn));
}
foreach ($lobs as $index => $lob) {
$dateigröße = cubrid_lob_size($lob);
echo "LOB #{$index}: Größe = {$dateigröße} Bytes\n";
// LOB in Datei exportieren
cubrid_lob_export($conn, $lob, "/tmp/dokument_{$index}.bin");
echo "LOB #{$index} wurde nach /tmp/dokument_{$index}.bin exportiert.\n";
// Ressource freigeben
cubrid_lob_close($lob);
}
cubrid_disconnect($conn);
?>
CLOB-Daten lesen und als Text ausgeben
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen.');
}
// CLOB-Daten abrufen
$lobs = cubrid_lob_get($conn, 'SELECT inhalt FROM artikel WHERE id = 42');
if ($lobs === false) {
die('Fehler: ' . cubrid_error($conn));
}
foreach ($lobs as $lob) {
$groesse = cubrid_lob_size($lob);
// LOB-Daten als String einlesen (ab Position 0, gesamte Länge)
$text = cubrid_lob_read($lob, 0, $groesse);
echo "Artikelinhalt:\n" . $text . "\n";
cubrid_lob_close($lob);
}
cubrid_disconnect($conn);
?>
// Wichtig · Fallstricke
Sicherheit: Die übergebene SQL-Abfrage sollte niemals direkt aus Benutzereingaben zusammengebaut werden, da dies zu SQL-Injection-Angriffen führen kann. Verwende stattdessen vorbereitete Statements mit cubrid_prepare und cubrid_bind.
Ressourcenmanagement: Jede zurückgegebene LOB-Ressource muss nach der Verwendung explizit mit cubrid_lob_close freigegeben werden, um Speicherlecks zu vermeiden — besonders bei der Verarbeitung vieler LOB-Objekte in einer Schleife.
Verfügbarkeit: Diese Funktion ist veraltet (deprecated) und steht nur in der älteren CUBRID-PHP-Erweiterung zur Verfügung. In neueren Versionen der CUBRID-Erweiterung (ab Version 8.4.1) werden LOB-Daten über die OCI-ähnliche Fetch-API oder direkt als Streams verarbeitet.