我想将所有unicode数据保存在oracle数据库中定义为nvarchar
的列中:
“आवस्यकताहैै्राइवर्सकीपूर्णव्वरणकेसेथसंपर्ककरें - यादव (8000000008)“
但是当我运行我的插入查询时,我会进入nvarchar
类型的列
在数据库中。
¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ ¿¿¿¿ (8000000008)
所以我的问题是 - >如何使用nvarchar
php
保存具有oracle
数据类型的列的数据?
这是我想要做的事情 -
putenv("ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1");
putenv("LD_LIBRARY_PATH=//u01/app/oracle/product/11.2.0/db_1/lib:/lib:/usr/lib");
$conn = oci_connect('db1', 'ps1', '//xxx.xx.xx.xx:1521/orcl', 'AL32UTF8') or die('db not connected');
$stmt=oci_parse($conn,"INSERT INTO TABLENM (VAL1, VAL2, VAL3, VAL4, VAL5 ) VALUES (:VAL1, :VAL2, :VAL3, :VAL4, :VAL5 )");
$VAL1 = "JK";
$VAL2 = "10005072";
$VAL3 = "27-JUL-17";
$VAL4 = 1;
$VAL5 = "आवस्यकता है ड्राइवर्स की पूर्ण विवरण के साथ संपर्क करें - यादव (8000000008)"; // VAL5 is created with datatype nvarchar in database
oci_bind_by_name($stmt, ':VAL1', $VAL1, 1000);
oci_bind_by_name($stmt, ':VAL2', $VAL2, 1000);
oci_bind_by_name($stmt, ':VAL3', $VAL3, 1000);
oci_bind_by_name($stmt, ':VAL4', $VAL4, 1000);
oci_bind_by_name($stmt, ':VAL5', $VAL5, 1000, SQLT_LBI);
$RES = oci_execute($stmt, OCI_DEFAULT);
oci_commit($conn);
echo "<pre>";
print_r($RES);
我从here找到了此SQLT_LBI
,但它对我不起作用。
有没有机会完成这件事?
请帮忙!
答案 0 :(得分:2)
PHP OCI8或PDO_OCI都不支持NVARCHAR,NCHAR或NCLOB类型。 http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html的第149页截至目前仍然有效:
不支持Oracle的NCHAR,NVARCHAR2和NCLOB类型 OCI8扩展
可能有一些奇怪的环境(?),但这可能只是DB字符集宽度足以容纳DB国家字符集的地方。