windwos下使用php连接oracle数据库的过程分享
要使用php连接oracle,基本条件是 根据你机器的版本选对64bit或者32bit的php程序,我们使用php的oci8扩展连接oracle 安装好php后,打开oci8扩展, 写一段连接oracle的ora.php代码 代码如下: $conn = oci_connect('hr','welcome','MYDB'); // Prepare the statement // Perform the logic of the query // Fetch the results of the query
oci_free_statement($stid); ?> 说明: 命令行下执行 代码如下: 提示如下错误 代码如下: PHP Warning: PHP Startup: Unable to load dynamic library 'C:phpphp_oci8.dll'- %1 不是有效的 Win32 应用程序。 in Unknown on line 0
PHP Parse error: syntax error,unexpected '"user"' (T_CONSTANT_ENCAPSED_STRING) in C:UsersnginxDesktoporaclephpocioci.php on line 3 开始以为是没有选对版本,我是64位的机器,结果说是win32的程序,一看字面提示,我就重新安装了新的32bit程序还是报错。 仔细查了查发现在32位像64位迁移的问题,出现如下问题时,我们需要安装Oracle Instant Client。 代码如下: Unable to load dynamic library 'C:Program Files (x86)PHPextphp_oci8_11g.dll' - %1 is not a valid Win32 application. Warning oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that PATH includes the directory with Oracle Instant Client libraries Oracle Instant Client,它是一个解压后就能使用的程序,不需要安装。 如果有oracle账号的可以去oracle下载对应的版本,(注册用户需要一堆信息) http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 嫌麻烦的同学使用这个地址下载 http://eduunix.ccut.edu.cn/index2/database/Oracle%20Instant%20Client/ 下载后把压缩包解压到c:oracleinstantclient,并添加路径到环境变量PATH 重新执行php ora.php,“%1 不是有效的 Win32 应用程序”的错误没有了,但是会提示 代码如下: 代码是从php官网直接拷过来的,代码中有不可见的字符,使用notepad++查看所有字符,去掉乱码即可。 继续执行,这次提示, 代码如下: PHP Fatal error: ORA-12154: TNS:could not resolve the connect identifier specified in C:UsersnginxDesktopairlineoci.php on line 6 看样子是php没有找到tnsnames.ora的位置,时间比较赶,那我就直接使用ip的形式,具体格式根据你的信息拼写oci_connect的第三个参数 oracle10格式:[//]host_name[:port][/service_name] oracle11格式:[//]host_name[:port][/service_name][:server_type][/instance_name]. 我具体使用的php oci连接串是: 代码如下: 配好上述信息后,终于能出结果了,但是发现查出来的结果中问乱码,这种问题基本都是编码不匹配。 php oci8中文乱码解决办法,先查询你的oracle的数据库编码使用, 代码如下: 查出来的结果是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,在php的代码里设置环境变量 代码如下: 终于php能够正确连接到oracle啦。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |