我想以同樣的方式做一個更新(C)LOB插入。 (插入已經在工作)。如何在oracle中用PHP更新LOB? (OCI_INVALID_HANDLE)
$queryHandle = oci_parse($dbHandle, "update MYTABLE set "MYCLOB" = EMPTY_CLOB() , "OTHERCOL" = :col0 where "PKIDCOL" = :wherecol0 returning "OTHERCOL" , "MYCLOB", into :retcol0 , :retcol1");
if(!is_resource($queryHandle)) {
$error=oci_error($dbHandle);
die($error['message'], $error['code']);
}
oci_bind_by_name($queryHandle, ":col0", $othercolvalue);
oci_bind_by_name($queryHandle, ":wherecol0", $pkidcol);
oci_bind_by_name($queryHandle, ":retcol0", $retcol1, 100);
$lob=oci_new_descriptor($dbHandle);
oci_bind_by_name($queryHandle, ":retcol1", $lob, -1, SQLT_CLOB);
if(!oci_execute($queryHandle , OCI_NO_AUTO_COMMIT)) {
$error=oci_error($dbHandle);
die($error['message'], $error['code']);
}
$lob->save($mylobvalue); // gives an PHP Warning: OCI-Lob::save(): OCI_INVALID_HANDLE in file.php on line 123
這不更新LOB並給出了一個:PHP Warning: OCI-Lob::save(): OCI_INVALID_HANDLE in file.php on line 123
這在文件中提到:'如果你是在一個更新語句中使用保存(),PHP將拋出一個警告類似「OCILobWrite:OCI_INVALID_HANDLE ......」如果你的update語句沒有抓到任何行與其where子句。「因此,在你更新數據庫之前,你需要確保你的條件匹配。在你的例子中'$ queryHandle'對於保存有效。 – Leri 2013-05-14 10:05:36
謝謝。這確實是這個問題。 :-) – JMW 2013-05-14 13:17:28
不客氣。 ;) – Leri 2013-05-14 13:47:45