de.comp.lang.php.* FAQ

18.9. Wie bearbeite ich LOBs mit PHP?

Keywords: Oracle | Datenbank | LOB | speichern

Antwort von Thomas Fromm

Diese Codebeispiele beschreiben insert, update und select:

// INSERT:
$req = "INSERT INTO bdata (description, data) VALUES
        (:description, EMPTY_BLOB()) returning data into :data";
$stmt = OCIParse($conn, $req);
$lob = OCINewDescriptor($conn, OCI_D_LOB);
OCIBindByName($stmt, ":description", $description, -1);
OCIBindByName($stmt, ":data", $lob, -1, OCI_B_BLOB);
OCIExecute($stmt, OCI_DEFAULT);
if($lob->save($bdata)) {
 OCICommit($conn);
} else {
 echo "Problems: Couldn't upload Lob\n";
}
OCIFreeDesc($lob);
OCIFreeStatement($stmt);

// Für die verwendeten Typen beim OCIBindByName auf jeden Fall mal
// ins PHP Handbuch schauen.

// UPDATE:
// Das SELECT FOR UPDATE sperrt den Eintrag für
// andere Schreibzugriffe
// Diese Sperre wird erst beim nächsten Commit aufgehoben
$req="SELECT data FROM bdata WHERE id='5' FOR UPDATE";
$stmt=OCIParse($conn, $req);
OCIExecute($stmt, OCI_DEFAULT);

$req="UPDATE bdata SET data=:data WHERE id='5'";
$stmt=OCIParse($conn, $req);
OCIBindByName($stmt, ":data", $data, -1);
OCIExecute($stmt, OCI_DEFAULT);
OCICommit($conn);

// SELECT
$req="SELECT data FROM bdata WHERE id='5'";
$stmt=OCIParse($conn, $req);
OCIExecute($stmt);
OCIFetch($stmt);
$bdatalob=OCIResult($stmt, "DATA");
$bdata=$bdatalob->load();

Valid HTML 4.01! Valid CSS!

18.9. Wie bearbeite ich LOBs mit PHP?
http://www.php-faq.de/q/q-oracle-lob.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team