Signatur
Beschreibung
cubrid_lob2_export() liest den Inhalt eines zuvor mit cubrid_lob2_new() oder aus einer Abfrage stammenden LOB-Objekts und schreibt ihn vollständig in die angegebene Datei auf dem lokalen Dateisystem. Dies ist besonders nützlich, wenn große Binär- oder Textdaten (z. B. Bilder, PDFs oder lange Textdokumente) effizient aus der CUBRID-Datenbank extrahiert werden sollen, ohne den gesamten Inhalt zunächst in den PHP-Speicher zu laden.
Der Dateiname wird neu erstellt oder überschrieben, falls er bereits existiert. Die Funktion arbeitet intern mit einem Stream und ist daher auch für sehr große LOB-Objekte geeignet, bei denen ein direktes Lesen in einen String (cubrid_lob2_read()) zu Speicherproblemen führen könnte.
Vor dem Aufruf dieser Funktion muss ein gültiges LOB-Handle vorhanden sein. Dieses wird entweder durch cubrid_lob2_new() erzeugt oder stammt aus einem mit cubrid_fetch() / cubrid_lob2_bind() gelesenen Resultset. Nach der Verwendung sollte das LOB-Objekt mit cubrid_lob2_close() freigegeben werden.
Beachte, dass der Schreibzeiger des LOB-Objekts nach dem Export am Ende des Datenstroms steht. Ein erneuter Export erfordert ein Zurücksetzen mit cubrid_lob2_seek() oder cubrid_lob2_seek64().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $lob_identifier Pflicht | resource | Ein gültiges LOB-Handle, das durch cubrid_lob2_new() oder durch das Lesen aus einem CUBRID-Resultset erzeugt wurde. |
|
| $file_name Pflicht | string | Pfad zur Zieldatei auf dem lokalen Dateisystem, in die der LOB-Inhalt geschrieben wird. Die Datei wird erstellt oder überschrieben. |
Rückgabewert
true zurück, wenn der Export erfolgreich war. Bei einem Fehler (ungültiges LOB-Handle, Schreibrechte fehlen o. ä.) wird false zurückgegeben.Beispiele
BLOB-Datenbankinhalt in eine lokale Datei exportieren
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . cubrid_error());
}
$req = cubrid_execute($conn, "SELECT bild FROM produkte WHERE id = 42");
if ($req) {
$row = cubrid_fetch($req, CUBRID_LOB);
if ($row && isset($row[0])) {
$lob = $row[0];
$zieldatei = '/var/export/produkt_42.jpg';
if (cubrid_lob2_export($lob, $zieldatei)) {
echo 'LOB erfolgreich exportiert nach: ' . $zieldatei;
} else {
echo 'Export fehlgeschlagen.';
}
cubrid_lob2_close($lob);
}
cubrid_close_request($req);
}
cubrid_disconnect($conn);
?>
Neu erstelltes LOB exportieren nach dem Import einer Datei
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
// Neues BLOB-Objekt anlegen und Datei importieren
$lob = cubrid_lob2_new($conn, 'BLOB');
cubrid_lob2_import($lob, '/tmp/dokument.pdf');
// LOB-Zeiger zurücksetzen und anschließend exportieren
cubrid_lob2_seek($lob, 0, CUBRID_CURSOR_FIRST);
if (cubrid_lob2_export($lob, '/var/backup/dokument_backup.pdf')) {
echo 'Backup des LOB-Objekts erfolgreich erstellt.';
} else {
echo 'Fehler beim Exportieren des LOB-Objekts.';
}
cubrid_lob2_close($lob);
cubrid_disconnect($conn);
?>
// Wichtig · Fallstricke
Sicherheitshinweis: Der Zieldateipfad sollte niemals direkt aus Benutzereingaben stammen, da dies zu Path-Traversal-Angriffen führen kann (z. B. ../../etc/passwd als Dateiname). Validiere und bereinige den Pfad stets serverseitig.
Dateiberechtigungen: Der PHP-Prozess benötigt Schreibrechte auf das Zielverzeichnis. Fehlen diese, gibt die Funktion false zurück, ohne eine spezifische Fehlermeldung auszugeben. Überprüfe die Verzeichnisrechte bei Problemen.
Zeigerposition: Nach dem Export befindet sich der interne Lesezeiger des LOB-Objekts am Ende. Soll dasselbe LOB-Objekt erneut exportiert oder gelesen werden, muss der Zeiger mit cubrid_lob2_seek() zurückgesetzt werden.