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 相关文章推荐
Zend公司全球首推PHP认证
Oct 09 PHP
PHP利用COM对象访问SQLServer、Access
Oct 09 PHP
PHP安装攻略:常见问题解答(三)
Oct 09 PHP
隐性调用php程序的方法
Mar 09 PHP
php array_map array_multisort 高效处理多维数组排序
Jun 11 PHP
PHP下常用正则表达式整理
Oct 26 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
PHP return语句另类用法不止是在函数中
Sep 17 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 06 PHP
php服务器的系统详解
Oct 12 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向js函数传参的几种方法
2014/08/10 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
PHP分享图片的生成方法
2018/04/25 PHP
几个javascript操作word的参考代码
2009/10/26 Javascript
纯CSS打造的导航菜单(附jquery版)
2010/08/07 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
几个人围成一圈的问题
2013/09/26 面试题
最新自我评价范文
2013/11/16 职场文书
2014年党员创先争优承诺书
2014/05/29 职场文书
经济信息系毕业生自荐信
2014/06/02 职场文书
咖啡店创业计划书范文
2014/09/15 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
公司行政主管岗位职责
2015/04/09 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书