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 相关文章推荐
从php核心代码分析require和include的区别
Jan 02 PHP
redis 队列操作的例子(php)
Apr 12 PHP
Zend的MVC机制使用分析(二)
May 02 PHP
鸡肋的PHP单例模式应用详解
Jun 03 PHP
php中把美国时间转为北京时间的自定义函数分享
Jul 28 PHP
如何实现php图片等比例缩放
Jul 28 PHP
laravel中的错误与日志用法详解
Jul 26 PHP
简单谈谈 php 文件锁
Feb 19 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 PHP
因str_replace导致的注入问题总结
Aug 08 PHP
Thinkphp 框架扩展之驱动扩展实例分析
Apr 27 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
php的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
ECMAScript 基础知识
2007/06/29 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
dojo随手记 gird组件引用
2011/02/24 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
ajax java 实现自动完成功能
2012/12/19 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
Python re模块介绍
2014/11/30 Python
Python中扩展包的安装方法详解
2017/06/14 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
laravel使用redis队列实例讲解
2021/03/23 PHP
运动会解说词100字
2014/01/31 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
探亲假请假条
2014/04/11 职场文书
学校三节实施方案
2014/06/09 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
装修公司管理制度
2015/08/05 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python