1、这里假设读者安装完毕,我安装的是wamp64位(PHP集成环境)+Oracle12,wamp自带mysql,但是有时候必须要使用Oracle或者像我期末作业需要等因素。
安装wamp,百度寻找相应安装步骤,我是腾讯安全管家的软件管理直接安装好,再需要另行相应一些参数的配置
2、我们需要相应的去官网下载PHP扩展包,一般PHP自带扩展的oracle10和oracle11g连接的扩展动态链接库(dll文件),注意自己的wamp版本位数,最后oci扩展不成功可能是这个原因
仔细阅读Description描述内容,可能你安装的php跟我的版本不一样,需要变通下载相应的文件,我的PHP版本是5.5.12,因此下载的是oci8-2.0.12
3、那么如何知道自己PHP版本情况呢?
(1)若安装的是wamp,则可以直接右下角wamp图标,左键->PHP->version,可以查看到PHP版本情况
(2)也可以直接利用自己的PHP编程工具,利用PHP输出相应的版本信息<?php
Phpinfo();
?>
我的执行结果:
4、下载完oci8-2.0.12后,我们会用到三个重要的动态链接库文件,分别是php_oci8.dll、php_oci8_11g.dll、php_oci8_12c.dll,这里我们需要用到相应版本的链接库,我的是Oracle12c,则是php_oci8_12c.dll,首先我们需要找到右下角wamp->PHP->php.in文件,然后找到 下图中的地方添加extension=php_oci8_12c.dll ; Use with Oracle 12c Instant Client,封号表示注释,需要用什么版本就是把前面的封号去掉
5、复制相应的动态链接库到两个地方
(1)$wamp安装目录binphpphp5.5.12ext
(2) C:WindowsSystem32
PS:可能还要复制到C:WindowsSysWOW64
6、将wamp->PHP->PHP extensions,把php_oci8_12c、php_oci8、php_pdo_oci勾上
7、重启wamp
8、至此,我们要看是否已经wamp是否成功扩展oci组件
当执行第一步phpinfo()显示如上图就代表成功,若没有则失败。失败的原因就是可能是很多原因,要么是版本的问题,要么是wamp位数的问题。
下面讲同局域网共同使用同数据库,那么要么安装完整的oracle,要么安装基本组件,来连接同一局域网远程电脑的oracle:
第一步 需要到oracle官方下载一个install client 包,在win下找到你对应系统版本的zip(注意这里是系统版本)
例如选择 Instant Client for Microsoft Windows (x64) 因为php扩展的是OCI,所以必须选对应版本的最全的那个,别的都没有OCI,这里下载可能需要有个账号,验证以后就可以下载,直接用连接下载不好用,没有的话注册一下就好了
第三,解压下载的第一个文件,到电脑任意目录,解压后得到文件目录 instantclient_12 _1 建议把后面的 "_12_1"去掉,以后改版本就不用动环境变量了
进入这个目录后双击打开 adrci.exe
得到如下命令行窗口,证明这个客户端在你本地可用
复制目录,我的是 F:devinstantclient 配置到系统的path环境变量,,然后重启即可,再执行phpinfo,可以见到oci扩展成功。
9、执行PHP连接数据库代码<?php
//这是oracle的监听部分,HOST是数据库IP地址,PORT是数据库端口号,SID是服务号
//$oraDB="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.62.172.9)(PORT=1521)))(CONNECT_DATA=(SID=orcl)))";
//oci_connect('账号','密码',$oraDB,可省略的编码);//倒数第二个参数或者为空“”,默认连接本机,第一个参数是
//$conn = oci_connect('c##scott','tiger',$oraDB,'utf8');
$conn = oci_connect('c##scott','tiger','','utf8');
$stmt = oci_parse($conn, "select * from emp");
oci_execute($stmt);
$nrows = oci_fetch_all($stmt, $results);
if ($nrows > 0) {
echo "
echo "
n";foreach ($results as $key => $val) {
echo "
$keyn";}
echo "
n";for ($i = 0; $i < $nrows; $i++) {
echo "
n";foreach ($results as $data) {
echo "
$data[$i]n";}
echo "
n";}
echo "
n";} else {
echo "No data found
n";
}
echo " $nrows Records Selected
n";
oci_free_statement($stmt);
oci_close($conn);
?>
10.做完以上步骤我们并没有真正意义上的利用IP地址进行连接数据库,而是只能默认使用本地来连接数据库,而往往我们需要一台数据库,多台电脑进行连接查询使用。这一步的灵感来自于以下,花了很多时间。第一次了解到Oracle的端口号默认是会改变的,我们需要修改注册表。监听+注册表=success
11.修改Oracle监听,打开Oracle的net manager,主机名字是电脑主机的名称,端口是默认1521