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

来源:互联网 发布:windows同步软件 编辑:程序博客网 时间:2024/06/14 08:22

这里讲的是通过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 0
原创粉丝点击