设为首页 收藏本站
查看: 860|回复: 0

[经验分享] 初学PHP——使用OCI连接Oracle

[复制链接]

尚未签到

发表于 2016-7-24 12:34:41 | 显示全部楼层 |阅读模式
  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打上勾。
   DSC0000.bmp
  
DSC0001.png
  
  
  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
  
  访问结果:
DSC0002.jpg
 
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-248646-1-1.html 上篇帖子: Oracle PL/SQL 常用函数总结 下篇帖子: Oracle 创建索引的基本规则总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表