php连接ORACLE数据库问题解决办法

时间:2022-09-16 17:58:33

php添加oracle数据库扩展时,扩展加载不出来:

解决步骤:

1,首先安装与oracle数据库版本相对应的oracle客户端,并下载与数据库版本对应的oci8.dlloci8_11g.dll扩展库,更新版本需安装oci8_12c.dll

2,将扩展库文件分别拷贝至系统盘的system32目录和phpetc目录下各一份,扩展库的版本同时要与php版本相对应;

3php5.4不支持oci8扩展,需使用5.4以下或者更新版本;

4,安装的oracle客户端如果精简版安装不上,需安装完整版,安装时选择“运行时”或“管理员”都可。

5,客户端安装完成后要配置环境变量,包括ORACLE_HOME,TNS_ADMIN等,path路径里要包括oracle_home,bin目录,instantclient目录。

如:

ORACLE_HOME=D:\app\username\oracle\product\11.2.0\client_1\

TNS_ADMIN=D:\app\username\oracle\product\11.2.0\client_1\network\admin\

PATH=D:\app\username\oracle\product\11.2.0\client_1\;D:\app\username\oracle\product\11.2.0\client_1\BIN;D:\app\username\oracle\product\11.2.0\client_1\LIB;D:\app\username\oracle\product\11.2.0\client_1\instantclient\;

6,oracle_home中的BIN目录里的oci.dllociclient.dll文件拷到系统盘的system32目录下

7,所有配置完成后,重新启动一下电脑

oci8扩展加载成功后,phpinfo上显示版本号为0.0.0.0.0

解决步骤:

1,确认将bin目录下的oci.dllociclient.dll文件拷到了system32下;

2,确认扩展库的版本与oracle的版本相对应,且与php版本也对应;

3,确认环境变量配置没有出错;

4,如果以上都无误,将bin目录下所有dll文件拷至system32目录下(一个省事的办法,也可以慢慢试)

php连接oracle数据库成功后,oci_execute函数执行失败,但是不报错:

解决步骤:

1,考虑sql语句书写错误,是否含有中文?

2,确认该数据库用户是否拥有执行该语句的相应的权限

php从数据库获取到的数据中文乱码:

可能原因:oracle客户端与数据库端的编码不一致,且与php端的默认编码格式不一致

解决步骤:

1,修改oracle客户端注册表,HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\找到NLS_LANG项将其值设置为SIMPLIFIEDCHINESE_CHINA.ZHS16GBK(即gbk格式),或american_america.AL32UTF8utf8格式),由oracle数据库的编码格式决定;

2,修改环境变量,增加NLS_LANG变量,值为上面相应的值;

3,重新启动电脑。

4,在调用时,如果是gbk格式,而php默认编码是utf8格式,则需要将取到数据的编码格式转换成utf8类型。