经验分享:php连接oracle及thinkphp 3.2.2连接oracle

这里讲的是通过php提供的一个oci_connect方法来连接oracle

如:$conn = oci_connect('用户名', '口令', '服务名')

注意,这里的服务名是指tnsnames.ora文件里面的服务名,并不是数据库域名(db_domain)、服务名(service_name)、或操作系统环境变量(ORACLE_SID)


php要连接oracle,必须使php的OCI8 Support 为enabled!

测试方法:在你的PHP运行环境里写入一个文件含phpinfo()的php网页,运行后在页面上查找OCI8,如果能找到如下图所示的内容,则说明你的PHP能够正常连接Oracle的数据库了!


如果你的php没有OCI8 Support,请先

1、把php.ini中的extension=php_oci8.dll开启,前面的注释分号去掉。

2、选择与你的系统环境位数(32或64位)的Instant Client,解压到一个目录(例如:E:\app\instantclient_11_2),然后在添加以下环境变量:
TNS_ADMIN=E:\app\TNS(你的tnsnames.ora目录)
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK(字符集设置)
然后在系统Path变量最前面添加值E:\app\instantclient_11_2;(注意分号不要漏了!这是你的Instant Client的目录!)

设置完成后最好重启下电脑!


假如我的tnsnames.ora为:

PHP =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.138.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = myorcl)
    )
  )

那么,这里的服务为PHP,如果用scott用户来连接的话,则为

<?php

$conn = $conn = oci_connect('scott', 'tiger', 'PHP')

if($conn){

echo 'ok!';

}else{

echo 'no!';

}

?>

一般到这就可以用PHP连接Oracle了,如果要用ThinPHP连接Oracle,则只需要在你的项目目录下的config文件里面添加一些配置即可,如:

  1. 'DB_TYPE'            => 'oracle'// 数据库类型   
  2. 'DB_NAME'            => 'PHP'// 服务名
  3. 'DB_USER'            => 'scott'// 用户名  
  4. 'DB_PWD'             => 'tiger'// 密码  
  5. 'DB_PREFIX'          => ' '// 数据库表前缀  
然后在控制器里面写

$db = M('dept');
$result = $db->select();
dump($result);

就可以看到查询结果了!

array (size=4)
  0 => 
    array (size=4)
      'DEPTNO' => string '10' (length=2)
      'DNAME' => string 'ACCOUNTING' (length=10)
      'LOC' => string 'NEW YORK' (length=8)
      'NUMROW' => string '1' (length=1)
  1 => 
    array (size=4)
      'DEPTNO' => string '20' (length=2)
      'DNAME' => string 'RESEARCH' (length=8)
      'LOC' => string 'DALLAS' (length=6)
      'NUMROW' => string '2' (length=1)
  2 => 
    array (size=4)
      'DEPTNO' => string '30' (length=2)
      'DNAME' => string 'SALES' (length=5)
      'LOC' => string 'CHICAGO' (length=7)
      'NUMROW' => string '3' (length=1)
  3 => 
    array (size=4)
      'DEPTNO' => string '40' (length=2)
      'DNAME' => string 'OPERATIONS' (length=10)
      'LOC' => string 'BOSTON' (length=6)
      'NUMROW' => string '4' (length=1)

如果出现没有监听等报错的话,请先检查数据库的配置信息(主要是ip)有没有错,然后检查下网络是否通。都没问题的话可以留言,我看到的话会第一时间回复……

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值