windwos下使用php连接oracle数据库的过程分享

要使用php连接oracle,基本条件是
1.需要你安装了php、
2.安装了oracle、
3.配置了tnsname.ora。
本地命令行使用sqlplus能够连接到oracle。

根据你机器的版本选对64bit或者32bit的php程序,我们使用php的oci8扩展连接oracle

安装好php后,打开oci8扩展,

写一段连接oracle的ora.php代码


代码如下:

<?php

$conn = oci_connect('hr', 'welcome', 'MYDB');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Prepare the statement
$stid = oci_parse($conn, 'SELECT * FROM departments');
if (!$stid) {
    $e = oci_error($conn);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Perform the logic of the query
$r = oci_execute($stid);
if (!$r) {
    $e = oci_error($stid);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Fetch the results of the query
print "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    print "<tr>\n";
    foreach ($row as $item) {
        print "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n";
    }
    print "</tr>\n";
}
print "</table>\n";

oci_free_statement($stid);
oci_close($conn);

?>

说明:
oci_connect('hr', 'welcome', 'MYDB')
第一个参数是oracle的用户名,
第二个参数是oracle的密码
第三个参数是tnsnames.ora里的连接串名

命令行下执行


代码如下:

php ora.php

提示如下错误


代码如下:

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\php_oci8.dll'- %1 不是有效的 Win32 应用程序。 in Unknown on line 0
PHP Parse error: syntax error, unexpected '"user"' (T_CONSTANT_ENCAPSED_STRING) in C:\Users\nginx\Desktop\oraclephpoci\oci.php on line 3

开始以为是没有选对版本,我是64位的机器,结果说是win32的程序,一看字面提示,我就重新安装了新的32bit程序还是报错。

仔细查了查发现在32位像64位迁移的问题,出现如下问题时,我们需要安装Oracle Instant Client。


代码如下:

Unable to load dynamic library 'C:\Program Files (x86)\PHP\ext\php_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 应用程序”的错误没有了,但是会提示


代码如下:

syntax error, unexpected T_CONSTANT_ENCAPSED_STRING

代码是从php官网直接拷过来的,代码中有不可见的字符,使用notepad++查看所有字符,去掉乱码即可。

继续执行,这次提示,


代码如下:

PHP Fatal error: ORA-12154: TNS:could not resolve the connect identifier specified in C:\Users\nginx\Desktop\airline\oci.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连接串是:


代码如下:

$conn = oci_connect('hr', 'welcome', '//www.jb51.net:1523/sycx');

配好上述信息后,终于能出结果了,但是发现查出来的结果中问乱码,这种问题基本都是编码不匹配。

php oci8中文乱码解决办法,先查询你的oracle的数据库编码使用,


代码如下:

select userenv('language') from dual;

查出来的结果是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,在php的代码里设置环境变量


代码如下:

putenv("NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK");

终于php能够正确连接到oracle啦。

(0)

相关推荐

  • php连接oracle数据库的方法(测试成功)

    本文简单分析了php连接oracle数据库的方法.分享给大家供大家参考,具体如下: PHP提供了两套函数与Oracle连接,分别是ORA_和OCI函数.其中ORA_函数略显陈旧.OCI函数更新据说更好一些.两者的使用语法几乎相差无几.你的PHP安装选项应该可以支持两者的使用. 由于OCI函数访问oracle8以上的数据库需要用到Oracle8 Call-Interface(OCI8),这个扩展模块需要oracle8的客户端函数库,因此需要连接远程数据库的话,还需要连接端安装oracle客户端软件

  • php连接oracle数据库的核心步骤

    本文实例讲述了php连接oracle数据库的核心步骤.分享给大家供大家参考,具体如下: 1.修改php.ini文件,打开extension=php_oci8.dll扩展. 2.拷贝php安装目录/ext/php_oci8.dll文件到system32目录下. 3.测试代码: $conn = oci_connect("scott", "tiger", $db); if (!$conn) { $e = oci_error(); print htmlentities($e

  • ThinkPHP连接Oracle数据库

    一.操作环境搭建 系统:Windows7 旗舰版 64位 PHP环境:wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24 32位版 下载地址:http://www.jb51.net/softs/161568.html ThinkPHP:3.2.3正式版 下载地址:http://thinkphp.cn/down.html Oracle:Orcale_11gR2 32位版 下载地址:http://www.oracle.com/technetwork/cn/

  • Linux下PHP连接Oracle数据库

    安装步骤: 一.安装oracle-instantclient 下载地址:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 下载 oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 下载 oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm 放在/usr/packages/目录下 # rmp -iv

  • Linux+php+apache+oracle环境搭建之CentOS下安装Oracle数据库

    这里推荐使用OTK脚本安装Oracle,会大大提高安装Oracle的成功系数. Description oraToolKit is the Swiss Army Knife for Oracle. Standards and well designed tools help DBA's mastering Oracle 10g / 11g throughout the whole lifecycle. OTK runs on Linux, zLinux, Solaris, AIX, HP-UX

  • php连接oracle数据库及查询数据的方法

    本文实例讲述了php连接oracle数据库及查询数据的方法.分享给大家供大家参考.具体分析如下: php有强大的功能不但可以支持mysql,mssql,mysqli之个我们还可以与oracle数据连接,要让php支持oracle非常的简单我们只要把php.ini中的;extention = php_oci8.dll分号去掉即可. php支持oracle连接函数 php.ini文件中的配置,去掉 ;extention = php_oci8.dll,去掉前面的分号,重启apache就可以了,如果不行

  • ThinkPHP 连接Oracle数据库的详细教程[全]

    一. 操作环境搭建 系统:Windows7 旗舰版 64位PHP环境:wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24  32位版下载地址:http://www.wampserver.com/en/ ThinkPHP:3.0正式版下载地址:http://thinkphp.cn/down.html Oracle:Orcale_11gR2  32位版下载地址:http://www.oracle.com/technetwork/cn/indexes/dow

  • 用PHP连接Oracle数据库

    通过PHP你可以轻松的连接到数据库,请求数据并将其显示在你的web站点中,甚至修改数据库中的数据.MySQL是一种很流行的数据库,并且在互联网中有许多有关PHP与MySQL的教程.MySQL是免费的,这一点也许就吸引了不少人.由于其广泛应用,我就不想在这里赘述MySQL的使用方法了.Oracle被大量在企业应用中采用,因此我们就利用Oracle来介绍PHP与数据库的连接.我们当然不会提及Oracle数据库的设计原理,原因是这已经超出了我们的讨论范围. PHP提供了两套函数与Oracle连接,分别

  • Win7 64位系统下PHP连接Oracle数据库

    下面讲下配置过程 一.下载oracle instantclient 下载地址:http://www.oracle.com/technetwork/topics/winx64soft-089540.html 下载 instantclient-basic-windows.x64-11.2.0.4.0 解压路径:D:\Program Files (x86)\Oracle64Client\instantclient_11_2 *注:客户端需要对应数据库版本. 二.配置系统环境变量 在PATH环境变量后加

  • windwos下使用php连接oracle数据库的过程分享

    要使用php连接oracle,基本条件是1.需要你安装了php.2.安装了oracle.3.配置了tnsname.ora.本地命令行使用sqlplus能够连接到oracle. 根据你机器的版本选对64bit或者32bit的php程序,我们使用php的oci8扩展连接oracle 安装好php后,打开oci8扩展, 写一段连接oracle的ora.php代码 复制代码 代码如下: <?php $conn = oci_connect('hr', 'welcome', 'MYDB');if (!$co

  • C#利用ODP.net连接Oracle数据库的操作方法

    本文介绍了C#连接Oracle数据库的过程.通过instant client和ODP.net中的Oracle.DataAccess.dll,我们就可以方便的部署.net应用程序或者站点,而不需要安装Oracle客户端.接下来我们就介绍这一过程. 1. ODAC的安装 在oracle的官方网站上下载与你安装的oracle对应版本的ODAC. 下载地址:ODAC Download 下载好后解压安装,安装时不用安装全部的组件.主要安装以下组件: Oracle Instant Client Oracle

  • windows下python连接oracle数据库

    python连接oracle数据库的方法,具体如下 1.首先安装cx_Oracle包 2.解压instantclient-basic-windows.x64-11.2.0.4.0.zip到c:\oracle 3.拷贝instantclient_11_2下所有.dll文件到c:\python34\Lib\site-packages\下(根据自己的python版本拷贝到相应的site-packages文件夹下) python连接示例代码: # -*- coding: utf-8 -*- import

  • WINDOWS下使用DOS命令行连接oracle数据库

    如何通过计算机的命令提示符(cmd.exe)连接 Oracle 数据库? DOS命令行连接oracle数据库 假设有一个 Oracle 数据库信息如下: IP:192.168.0.1 SID:orcl 端口号:1521 用户名:testuser 密码:123456 在本地客户端中配置的服务名为:server1 1.通过服务名连接数据库 sqlplus userName/userPassword@netServiceName 例:sqlplus  testuser/123456@server1 2

  • plsql连接oracle数据库报ora 12154错误解决方法

    plsql连接oracle数据库报ora 12154错误 今天遇到一个问题,使用sqlplus能够连接到远程的数据库,但是使用plsql却连接不上,报错"ORA-12154: TNS: 无法解析指定的连接标识符" 解决方法如下: 1.先检查服务器端的监听服务是否打开,如果没有打开请启动其监听 客户端:tnsping <tns_name> 服务器Linux下: #>lsnrctl status 查看监听状态 #>lsnrctl start 启动监听 2.通过Sql

  • python连接oracle数据库实例

    本文实例讲述了python连接oracle数据库的方法,分享给大家供大家参考.具体步骤如下: 一.首先下载驱动:(cx_Oracle) http://www.python.net/crew/atuining/cx_Oracle/ 不过要注意一下版本,根据你的情况加以选择. 二.安装: 首先配置oracle_home环境变量 执行那个exe安装程序就可以了,它会copy一个cx_Oracle.pyd到Libsite-packages目录下. 如果是linux,执行 复制代码 代码如下: pytho

  • JDBC连接Oracle数据库常见问题及解决方法

    注:本文是斑竹从JDBC & Transaction版摘录广大站友的提问以及各种解答整理而来,如果您认为本文的内容已触犯了您的权益,请联系管理员进行修改. Jbuilder正确连接 oracle 9i需要注意的几个问题 oracle8以上的应该都使用classes12.jar文件作为jdbc驱动: 正确设置windows的classpath和jbuilder中的enterprise setup .configure libraries,将casses12.jar路径正确添加到上述需要设置的地方:

随机推荐