WAMP环境中扩展oracle函数库(oci)


Posted in PHP onJune 26, 2015

同事昨天接到一个任务,要用php处理oracle数据库的内容,但是php打开oracle扩展不是像mysql那样直接用就行,需要下一点东西才能打开

第一步 需要到oracle官方下载一个install client 包,在win下找到你对应系统版本的zip(注意这里是系统版本)

截止到2015-06-25,下载地址如下http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

例如选择 Instant Client for Microsoft Windows (x64)  因为php扩展的是OCI,所以必须选对应版本的最全的那个,别的都没有OCI,这里下载可能需要有个账号,验证以后就可以下载,直接用连接下载不好用,没有的话注册一下就好了

第二部,需要下载win系统中的扩展包也就是.dll文件  下载地址   http://pecl.php.net/package/oci8   下面一段废话是告诉你怎么找的

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 在这个地址下点击

official Instant Client site.  拉到最后 Related Developer Centers 里面点     "PHP - OCI8 extension"

然后选项卡 downloads

点OCI8  到   http://pecl.php.net/package/oci8 

然后怎么下载就不多说了

到这里完成下载两个zip包,然后就是配置PHP

第三,解压下载的第一个文件,到电脑任意目录,解压后得到文件目录 instantclient_12 _1  建议把后面的 "_12_1"去掉,以后改版本就不用动环境变量了

进入这个目录后双击打开 adrci.exe

得到如下命令行窗口,证明这个客户端在你本地可用

WAMP环境中扩展oracle函数库(oci)

复制目录,我的是  F:\dev\instantclient  配置到系统的path环境变量,

第四,解压下载的dll的压缩包,复制其中的  php_oci8.dll  php_oci8_11g.dll  php_oci8_12c.dll  我目前就是这三个,到php的扩展包文件,通常是 ....../php/ext/目录下

其实可以不替换,不过建议还是替换一下好,

然后打开php.ini 把扩展打开,最后一个是后来加进去的,php本来没有,反正上面包里有的dll文件都写进去应该错不了,顶多运行php的时候多加载几个库

extension=php_pdo_oci.dll

extension=php_oci8.dll   ; Use with Oracle 10gR2 Instant Client
extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
extension=php_oci8_12c.dll ; Use with Oracle 12c  Instant Client

然后重启httpd服务,打开 phpinfo(); 应该能看到

PDO support enabled
PDO drivers mysql, oci, odbc
 
OCI8 Support enabled
OCI8 DTrace Support disabled
OCI8 Version 2.0.8
Revision $Id: f04114d4d67cffea4cdc2ed3b7f0229c2caa5016 $
Oracle Run-time Client Library Version 12.1.0.2.0
Oracle Compile-time Instant Client Version 10.2

这样就说明扩展打开成功了

最后就是连接oracle数据库了

这里给一个实例连接 原文连接 http://www.orczhou.com/index.php/2010/09/php-oci8-oracle/

<?php 
//配置信息
$ora_host = "172.16.1.150";
$ora_port="1521";
$ora_sid = "cop";
$ora_username = "webdev";
$ora_password = "webdev";
$charset = "UTF8"; ### zhs16gbk ###

//构建Easy Connect string
//(如果tnsnames.ora中已经有了,可以直接使用Connect Name)
$ora_connstr = "(description=(address=(protocol=tcp)
(host=".$ora_host.")(port=".$ora_port."))
(connect_data=(service_name=".$ora_sid.")))";
//连接数据库
$conn = oci_connect($ora_username, $ora_password,$ora_connstr);
//执行Query,这里$res接收的是一个boolean值
$stid = oci_parse($conn, 'select * FROM dq_try_app');
$res = oci_execute($stid);

//在while循环中使用oci_fetch_array遍历结果。
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
  
  foreach ($row as $item) {
    echo $item."***";
  }
  echo "<br>";
  
}
//var_dump($stid);  
?>

至此,整个的扩展加连接就完成了

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
一个简单的自动发送邮件系统(二)
Oct 09 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
Jul 01 PHP
8个必备的PHP功能实例代码
Oct 27 PHP
PHP实现操作redis的封装类完整实例
Nov 14 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
php读取XML的常见方法实例总结
Apr 25 PHP
PHP利用Socket获取网站的SSL证书与公钥
Jun 18 PHP
利用PHP判断是否是连乘数字串的方法示例
Jul 03 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
Jul 18 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 PHP
PHP实现单条sql执行多个数据的insert语句方法
Oct 11 PHP
PHP获取当前相对于域名目录的方法
Jun 26 #PHP
php通过获取头信息判断图片类型的方法
Jun 26 #PHP
以文件形式缓存php变量的方法
Jun 26 #PHP
PHP批量去除BOM头代码分享
Jun 26 #PHP
PHP多态代码实例
Jun 26 #PHP
PHP微信开发之二维码生成类
Jun 26 #PHP
Thinkphp关闭缓存的方法
Jun 26 #PHP
You might like
PHP4引用文件语句的对比
2006/10/09 PHP
PHP Stream_*系列函数
2010/08/01 PHP
PHP判断远程url是否有效的几种方法小结
2011/10/08 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
PHP基于GD库的图像处理方法小结
2016/09/27 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
java解析json方法总结
2019/05/16 PHP
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
浅谈小程序 setData学问多
2019/02/20 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
python实现2048小游戏
2015/03/30 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
用python实现的线程池实例代码
2018/01/06 Python
python中类的属性和方法介绍
2018/11/27 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
linux面试题参考答案(8)
2016/04/19 面试题
中专自荐信
2013/10/13 职场文书
电子商务应届生自我鉴定
2014/01/13 职场文书
毕业论文评语大全
2014/04/29 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
表扬稿格式范文
2015/01/16 职场文书
辩论赛新闻稿
2015/07/17 职场文书
公司财务管理制度
2015/08/04 职场文书
教你使用pyinstaller打包Python教程
2021/05/27 Python