这里讲的是通过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文件里面添加一些配置即可,如:
- 'DB_TYPE' => 'oracle', // 数据库类型
- 'DB_NAME' => 'PHP', // 服务名
- 'DB_USER' => 'scott', // 用户名
- 'DB_PWD' => 'tiger', // 密码
- '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)有没有错,然后检查下网络是否通。都没问题的话可以留言,我看到的话会第一时间回复……