Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在oracle中使用PHP更新LOB?(OCI\u无效\u句柄)_Php_Oracle_Oracle11g - Fatal编程技术网

如何在oracle中使用PHP更新LOB?(OCI\u无效\u句柄)

如何在oracle中使用PHP更新LOB?(OCI\u无效\u句柄),php,oracle,oracle11g,Php,Oracle,Oracle11g,我正在尝试以与插入相同的方式更新a(C)LOB。(插入已在工作) 这不会更新lob,并给出一个:PHP警告:OCI lob::save():OCI\u INVALID\u HANDLE in file.PHP在第123行有几十个示例说明如何使用lob值插入/更新行 首先,您必须创建一个LOB描述符: $desc=oci\u new\u描述符($connection,oci\u DTYPE\u LOB); 然后将此描述符用作LOB占位符的绑定值: 按名称($queryHandle,“:retco

我正在尝试以与插入相同的方式更新a(C)LOB。(插入已在工作)


这不会更新lob,并给出一个:
PHP警告:OCI lob::save():OCI\u INVALID\u HANDLE in file.PHP在第123行

有几十个示例说明如何使用
lob
值插入/更新行

首先,您必须创建一个
LOB
描述符:

$desc=oci\u new\u描述符($connection,oci\u DTYPE\u LOB);
然后将此描述符用作
LOB
占位符的绑定值:

按名称($queryHandle,“:retcol1”,$desc,-1,SQLT\u CLOB)绑定oci; 然后临时写入数据:

$desc->writeTemporary($data);
然后执行这个查询

更多信息请访问+仔细阅读所有评论以获取更多示例


一些示例使用
$desc->write($data)
+execute+commit,有些使用execute+
$desc->saveFile($data)+commit,所有都应该工作。

正如PLB所说:由于主键值错误,更新查询没有更新任何行。这导致出现php警告消息


文档中提到了这一点:
如果在update语句中使用Save(),则如果update语句未捕获带有where子句的任何行,PHP将抛出类似于“OCILobWrite:OCI\U INVALID\U HANDLE…”的警告。
所以在更新数据库之前,您需要确保您的条件匹配。在您的示例中,
$queryHandle
对保存有效。谢谢。确实是这个问题。:-)
$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