Start · Sprachen · PHP · Referenz · cubrid_lob_get

cubrid_lob_get

Funktion

Führt eine SQL-Abfrage aus und gibt ein Array von LOB-Handles (BLOB/CLOB) aus einer CUBRID-Datenbank zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

cubrid_lob_get(resource $conn_identifier, string $sql): array|false

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

Typ
array|false
Beschreibung
Gibt bei Erfolg ein Array von LOB-Ressource-Handles zurück. Jedes Element repräsentiert ein LOB-Objekt aus dem Abfrageergebnis. Im Fehlerfall wird 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);
?>
LOB #0: Größe = 204800 Bytes LOB #0 wurde nach /tmp/dokument_0.bin exportiert.

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);
?>
Artikelinhalt: Dies ist der vollständige Text des Artikels aus der CUBRID-Datenbank.

// 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.