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绝对路径与相对路径之间关系的的分析
Mar 03 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Jun 25 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 PHP
使用纯php代码实现页面伪静态的方法
Jul 25 PHP
php指定长度分割字符串str_split函数用法示例
Jan 30 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
Sep 19 PHP
PHP迭代器和生成器用法实例分析
Sep 28 PHP
php数组指针函数功能及用法示例
Feb 11 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 PHP
PHP程序守护进程化实现方法详解
Jul 16 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
Windows下部署Apache+PHP+MySQL运行环境实战
2012/08/31 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
如何实现JS函数的重载
2006/09/22 Javascript
jquery 弹出层实现代码
2009/10/30 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
web.py中调用文件夹内模板的方法
2014/08/26 Python
python中xrange用法分析
2015/04/15 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
澳洲的服装老品牌:SABA
2018/02/06 全球购物
公司中层干部的自我评价分享
2014/03/01 职场文书
党员领导干部承诺书
2014/05/28 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python
mysql insert 存在即不插入语法说明
2022/03/25 MySQL