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 相关文章推荐
打造计数器DIY三步曲(上)
Oct 09 PHP
PHP中读写文件实现代码
Oct 20 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
php 发送带附件邮件示例
Jan 23 PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 PHP
php查找指定目录下指定大小文件的方法
Nov 28 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
PHP常用操作类之通信数据封装类的实现
Jul 16 PHP
php 数据结构之链表队列
Oct 17 PHP
php 后端实现JWT认证方法示例
Sep 04 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 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
MySQL 日期时间函数常用总结
2012/06/12 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
jQuery跨域问题解决方案
2015/08/03 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
prototype.js常用函数详解
2016/06/18 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
python中函数传参详解
2016/07/03 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
pandas 实现字典转换成DataFrame的方法
2018/07/04 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
Django ModelForm操作及验证方式
2020/03/30 Python
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
法国在线药房:1001Pharmacies
2021/03/07 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
公务员群众路线心得体会
2014/11/03 职场文书
优质护理心得体会
2016/01/22 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
PHP使用QR Code生成二维码实例
2021/07/07 PHP
各种货币符号快捷输入
2022/02/17 杂记