初学PHP——使用OCI连接Oracle

系统 1868 0

1、让PHP支持OCI,只需如下几步:

首先,安装PHP的集成运行环境,或者理解为服务器吧,我安装的是名叫WampServer的,安装好后,从安装目录中找到php.ini文件,比如我本地的路径是 D:\wamp\bin\php\php5.3.3 ,将 php.ini 中的 php_oci8.dll 的;去掉,也就是把注释去掉,相当于可以使用php_oci8了。

2、然后wampserver运行后,将php>php extentions中将php_oci8打上勾。

初学PHP——使用OCI连接Oracle

 

初学PHP——使用OCI连接Oracle

 

 

2、安装的有Oracle客户端,并且在 Oracle 安装配置文件, tnsnames.ora 文件,此文件路径是安装oracle的路径,比如我本机的是

F:\oracle\product\10.2.0\client_1\NETWORK\ADMIN   ,所连的 200 数据库,其中的配置详情如下:

200 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.200)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = tongcard)

    )

  )

 

 

 

 

以下是使用PHP的OCI得到db的方法,与上面的tnsnames.ora文件非常类似:

 

$db = " (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = $host)(PORT = $port)) (CONNECT_DATA = (SID=$sid) (SERVER = DEDICATED) (SERVICE_NAME = $sname) ) )";

  

 

 

比照以上的两片代码可以发现:

CONNECT_DATA =   (SERVICE_NAME = tongcard)

CONNECT_DATA = (SID=$sid)

service_name 名为 tongcard, sid 就是 service_name 的值。

 

 

 下面是一个例子,验证是否连接数据库成功,因为想以最快速度验证使用PHP的OCI连接数据库成功,所以没有写HTML页面,直接模拟了一个登录,将所需要的参数以变量形式传入。

<?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ //以下是变量(数据库连接的配置) $host = "192.168.1.200"; $port = "1521"; $sid = "tongcard"; $sname = "tongcard"; $db_user = "tmp2120723"; $db_pwd = "ceshi"; //以下是模拟登录,输入的参数为用户名和密码。此处为了简便没有写HTML页面, //将user_pass作为输入的值传入,为了验证连接数据库是否成功。 $userName ='admin'; $user_pass ='123456'; $user_id = '01040010001.admin'; if (!($conn = connect_oracle2($host, $port, $sid, $sname, $db_user, $db_pwd))) {//是否得到数据库链接 echo "connot connect the Oracle database"; exit; } $qry = "select * from tmp2120723.admin_users t where t.user_id=:userId and t.login_name = :loginName"; $sql = oci_parse($conn, $qry);//查询转换 oci_bind_by_name($sql, ":loginName", $userName, 32);//查询语句$sql,条件所需要的参数loginName,值为$userName,长度为32.长度可以不写 oci_bind_by_name($sql, ":userId",$user_id );//$sql查询语句,所需要的参数userId,值 为$user_id变量的值, echo "<br/>"; oci_execute($sql);//执行sql $row = array();//查询都是返回array() while ($result = oci_fetch_array($sql, OCI_ASSOC)) {//使用oci_fetch_array函数遍历 $row[] = $result;//转成数组的结果集 foreach ($result as $key => $value) { if ($key == 'LOGIN_PASSWD') { if (md5($user_pass) == $value) {//密码MD5后的值=从数据库表中查询出来的value echo "login success<br/>"; } else { echo "login failed <br/>"; } } } } //连接数据库方法 function connect_oracle2($host, $port, $sid, $sname, $db_user, $db_pwd){ $db = " (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = $host)(PORT = $port)) (CONNECT_DATA = (SID=$sid) (SERVER = DEDICATED) (SERVICE_NAME = $sname) ) )"; $dbconn = ocilogon($db_user, $db_pwd, $db); return $dbconn; } ?>

  

 

运行该文件,我是将此文件放入到wamp的D:\wamp\www\里面,其实这只是一个文件,并不是一个项目,最初为了验证如果不将此文件直接放在wamp的www,而是放在一个文件夹里,该如何访问,因此增加了一个testing的文件夹,将此文件放入到testing目录下,我的文件名叫TestOne.php

准备进绪,开始访问:

http://localhost/testing/TestOne.php

这里值得一提的是,PHP的访问,在默认为8080端口时,不需要在localhost后面加:8080,假如没有testing文件夹,则直接是 http://localhost/TestOne.php

 

访问结果:

初学PHP——使用OCI连接Oracle

 

 

初学PHP——使用OCI连接Oracle


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论