Start · Sprachen · PHP · Referenz · cubrid_lob2_import

cubrid_lob2_import

Funktion

Importiert BLOB- oder CLOB-Daten aus einer lokalen Datei in ein CUBRID-LOB2-Objekt.

seit PHP 8.4.1 Kategorie: db

Signatur

cubrid_lob2_import(resource $lob_identifier, string $file_name): bool

Beschreibung

cubrid_lob2_import liest den Inhalt einer angegebenen Datei und schreibt ihn vollständig in ein zuvor mit cubrid_lob2_new erzeugtes LOB2-Objekt (BLOB oder CLOB). Damit lassen sich große Binär- oder Textdaten — z. B. Bilder, PDFs oder XML-Dokumente — bequem aus dem Dateisystem in eine CUBRID-Datenbank übertragen.

Die Funktion eignet sich besonders dann, wenn die zu speichernden Daten bereits als Datei vorliegen und ein vollständiger Import auf einmal ausreicht. Im Unterschied zu cubrid_lob2_write, das schrittweise Daten schreibt, ersetzt cubrid_lob2_import den gesamten LOB-Inhalt durch den Dateiinhalt.

Nach dem Import kann das LOB2-Objekt über cubrid_lob2_bind an einen vorbereiteten Statement-Parameter gebunden und dann in die Datenbank gespeichert werden. Es ist wichtig, das LOB2-Objekt nach Verwendung mit cubrid_lob2_close zu schließen, um Ressourcen freizugeben.

  • Funktioniert sowohl mit BLOB- als auch mit CLOB-Typen.
  • Die Datei muss für den PHP-Prozess lesbar sein.
  • Der LOB-Zeiger wird nach dem Import an die Position nach dem letzten geschriebenen Byte gesetzt.

Parameter

Name Typ Default Beschreibung
$lob_identifier Pflicht resource Ein gültiges CUBRID LOB2-Ressource-Handle, das zuvor mit cubrid_lob2_new erstellt wurde.
$file_name Pflicht string Pfad zur lokalen Datei, deren Inhalt in das LOB2-Objekt importiert werden soll. Der PHP-Prozess benötigt Lesezugriff auf diese Datei.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Import erfolgreich war, andernfalls false — z. B. wenn die Datei nicht gefunden wird, nicht lesbar ist oder ein Datenbankfehler auftritt.

Beispiele

Bild-Datei als BLOB in CUBRID speichern

<?php
$conn = cubrid_connect('localhost', 33000, 'testdb', 'dba', '');

// Vorbereitetes Statement für den INSERT
$req = cubrid_prepare($conn, 'INSERT INTO product_images (id, image_data) VALUES (?, ?)');

// Neues BLOB-Objekt anlegen
$lob = cubrid_lob2_new($conn, 'BLOB');

// Bilddatei importieren
$filePath = '/var/www/uploads/product_42.jpg';
if (cubrid_lob2_import($lob, $filePath)) {
    echo "Import erfolgreich.\n";

    // LOB an den Statement-Parameter binden
    cubrid_bind($req, 1, 42);
    cubrid_bind($req, 2, $lob, 'BLOB');

    cubrid_execute($req);
    echo "Datensatz gespeichert.\n";
} else {
    echo "Fehler beim Importieren der Datei.\n";
}

cubrid_lob2_close($lob);
cubrid_close($conn);
?>
Import erfolgreich. Datensatz gespeichert.

Textdatei als CLOB in CUBRID speichern

<?php
$conn = cubrid_connect('localhost', 33000, 'testdb', 'dba', '');

$req = cubrid_prepare($conn, 'INSERT INTO documents (doc_id, content) VALUES (?, ?)');

// CLOB-Objekt für Textdaten anlegen
$lob = cubrid_lob2_new($conn, 'CLOB');

$filePath = '/var/www/data/report.txt';
if (cubrid_lob2_import($lob, $filePath)) {
    cubrid_bind($req, 1, 101);
    cubrid_bind($req, 2, $lob, 'CLOB');
    cubrid_execute($req);
    echo "Textdokument erfolgreich gespeichert.\n";
} else {
    echo "Import fehlgeschlagen: Datei nicht lesbar oder nicht gefunden.\n";
}

cubrid_lob2_close($lob);
cubrid_close($conn);
?>
Textdokument erfolgreich gespeichert.

// Wichtig · Fallstricke

Sicherheitshinweis: Stellen Sie sicher, dass der Dateipfad nicht aus Benutzereingaben unkontrolliert übernommen wird. Ein unvalidierter Pfad kann zu Path-Traversal-Angriffen führen, bei denen sensible Systemdateien in die Datenbank gelesen werden. Validieren Sie Dateipfade stets mit realpath und prüfen Sie, ob die Datei innerhalb eines erlaubten Verzeichnisses liegt.

Das LOB2-Objekt muss stets mit cubrid_lob2_close geschlossen werden, auch im Fehlerfall, um Datenbankressourcen nicht zu erschöpfen. Verwenden Sie ggf. try/finally-Blöcke für eine zuverlässige Bereinigung.

Diese Funktion steht nur zur Verfügung, wenn PHP mit CUBRID-Unterstützung kompiliert wurde (CUBRID-Extension).