Signatur
Beschreibung
cubrid_lob_export() liest die Daten eines zuvor mit cubrid_lob_get() abgerufenen LOB-Objekts (Large Object, entweder BLOB oder CLOB) und schreibt sie vollständig in eine Datei auf dem lokalen Dateisystem. Die Funktion ist besonders nützlich, wenn große Binär- oder Textdaten (z. B. Bilder, PDFs, XML-Dokumente) aus einer CUBRID-Datenbank extrahiert und gespeichert werden sollen, ohne den gesamten Inhalt im PHP-Arbeitsspeicher halten zu müssen.
Der Parameter $conn_identifier ist der aktive Datenbankverbindungs-Handle und $lob_identifier das LOB-Ressourcen-Handle, das zuvor aus einem CUBRID-Abfrageergebnis gewonnen wurde. Der Zieldateipfad $path_name muss vom Webserver schreibbar sein; existiert die Datei bereits, wird sie überschrieben.
Nach der Verwendung sollten sowohl der LOB-Handle (mit cubrid_lob_close()) als auch das Abfrageergebnis (mit cubrid_close_request()) freigegeben werden, um Ressourcenlecks zu vermeiden.
Diese Funktion gehört zur älteren CUBRID-Erweiterung (cubrid_*). Für neue Projekte empfiehlt es sich, die objektorientierte Schnittstelle der CUBRID-PDO-Erweiterung oder die neueren cubrid_lob2_*-Funktionen zu verwenden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $conn_identifier Pflicht | resource | Aktiver CUBRID-Verbindungs-Handle, der mit cubrid_connect() oder cubrid_connect_with_url() erzeugt wurde. |
|
| $lob_identifier Pflicht | resource | Das LOB-Ressourcen-Handle, das über cubrid_lob_get() aus einem Abfrageergebnis gewonnen wurde. Kann ein BLOB- oder CLOB-Objekt referenzieren. |
|
| $path_name Pflicht | string | Absoluter oder relativer Dateipfad, in den der LOB-Inhalt geschrieben werden soll. Das Verzeichnis muss existieren und für den PHP-Prozess schreibbar sein. |
Rückgabewert
true zurück, wenn der Export erfolgreich war, andernfalls false (z. B. bei ungültigem Handle, nicht schreibbarem Pfad oder Datenbankfehler).Beispiele
BLOB-Bild aus CUBRID-Datenbank in Datei exportieren
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . cubrid_error());
}
$req = cubrid_execute($conn, "SELECT image_data FROM products WHERE id = 42");
if (!$req) {
die('Abfrage fehlgeschlagen: ' . cubrid_error($conn));
}
// LOB-Handles aus dem Ergebnis laden
$lobs = cubrid_lob_get($conn, $req);
if ($lobs === false) {
die('LOB-Handle konnte nicht geladen werden.');
}
$exportPath = '/var/www/uploads/product_42.jpg';
if (cubrid_lob_export($conn, $lobs[0], $exportPath)) {
echo 'Bild erfolgreich exportiert nach: ' . $exportPath;
} else {
echo 'Export fehlgeschlagen: ' . cubrid_error($conn);
}
cubrid_lob_close($lobs);
cubrid_close_request($req);
cubrid_disconnect($conn);
CLOB-Textdokument exportieren und prüfen
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$req = cubrid_execute($conn, "SELECT document_text FROM articles WHERE slug = 'einleitung'");
$lobs = cubrid_lob_get($conn, $req);
$tmpFile = sys_get_temp_dir() . '/article_export.txt';
if (cubrid_lob_export($conn, $lobs[0], $tmpFile)) {
$size = filesize($tmpFile);
echo sprintf('Dokument exportiert: %s (%d Bytes)%s', $tmpFile, $size, PHP_EOL);
// Weiterverarbeitung, z. B. Volltextindexierung
$content = file_get_contents($tmpFile);
echo 'Erste 100 Zeichen: ' . substr($content, 0, 100);
} else {
echo 'Fehler beim Export: ' . cubrid_error($conn);
}
cubrid_lob_close($lobs);
cubrid_close_request($req);
cubrid_disconnect($conn);
// Wichtig · Fallstricke
Sicherheit: Der Zieldateipfad $path_name sollte niemals direkt aus Benutzereingaben übernommen werden, da dies zu Path-Traversal-Angriffen führen kann (z. B. ../../etc/passwd). Validieren und bereinigen Sie den Pfad stets serverseitig.
Dateiberechtigungen: Stellen Sie sicher, dass das Zielverzeichnis vom PHP-Prozess (z. B. www-data) beschreibbar ist, aber nicht öffentlich über den Webserver abrufbar, sofern die Daten vertraulich sind.
Deprecation: Die cubrid_lob_*-Funktionen gelten als ältere API. Für neue Projekte werden die cubrid_lob2_*-Funktionen empfohlen, die flexibler im Umgang mit LOB-Daten sind und u. a. cubrid_lob2_export() bieten.
Ressourcen: Vergessen Sie nicht, LOB-Handles mit cubrid_lob_close() zu schließen, um Speicherlecks auf Datenbankseite zu vermeiden.