Signatur
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
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);
?>
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);
?>
// 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).