Oracle PHP"&;nbsp";变成"?"";更新时


Oracle PHP " " becomes "??" on update

我有一个应用程序,它将html模板保存为oracle数据库中的clob
当我更新以前保存的HTML时, 将变为??

$sql = "UPDATE headers 
        SET header_code = :HEADER_CODE
        WHERE header_ID = :HEADER_ID ";
...
oci_bind_by_name($stid, ':HEADER_CODE', $form_qs['HEADER_CODE']); 
oci_bind_by_name($stid, ':HEADER_ID', $form_qs['HEADER_ID']); 
...

oracle版本信息:
oracle Database 10g Enterprise Edition10.2.0.4.0-64bi版本
PL/SQL 10.2.0.4.0版本-生产
"CORE 10.2.0.4.0生产">
Solaris的TNS:10.2.0.4.0版-生产
NLSRTL 10.2.0.4.0版本-生产

PHP 5.2.6版

好吧,在数据页让我意识到这是一个编码问题,而不是数据库问题之后,我重新关注了我的谷歌搜索,发现是文本框(以及我的enctype(在转换 转换为2个字符的Unicode(我回显了strlen($form_qs['HEADER_CODE']((。

话虽如此,我现在正在替换&与&因此文本框将显示 不是空白。我希望解决方案不会把其他事情搞砸,但时间会证明一切。

str_replace('&','&',$form_qs['HEADER_CODE']);

(感谢DoParKot和nickb提供的格式化帮助(

我不确定代码中是否有语法错误,但是您可以使用oci_new_descriptor()为CLOB 打开一个新的描述符

<?php
$clob = oci_new_descriptor ($conn, OCI_D_LOB);
oci_bind_by_name ($stid, ':HEADER_CODE', $clob, -1, OCI_B_CLOB);
$clob->write  ($form_qs['HEADER_CODE']);
oci_bind_by_name($stid, ':HEADER_ID', $form_qs['HEADER_ID']);
//after execution/commit
$clob->free();
?>

OCI_D_LOB:LOB型数据

OCI_B_CLOB:CLOB型的结合