18.9. Wie bearbeite ich LOBs mit PHP?Antwort von Thomas FrommDiese 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(); |
||
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 |