Start · Sprachen · PHP · Referenz · cubrid_lob_export

cubrid_lob_export

Funktion

Exportiert den Inhalt eines CUBRID-BLOB- oder CLOB-Objekts direkt in eine lokale Datei.

seit PHP 5.0.0 Kategorie: db

Signatur

cubrid_lob_export(resource $conn_identifier, resource $lob_identifier, string $path_name): bool

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

Typ
bool
Beschreibung
Gibt 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);
Bild erfolgreich exportiert nach: /var/www/uploads/product_42.jpg

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);
Dokument exportiert: /tmp/article_export.txt (2048 Bytes) Erste 100 Zeichen: Lorem ipsum dolor sit amet...

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