要想用php连接Oracle,需要:

1.安装并配置Oracle instant Client

2.配置php的php_oci8_11g拓展

一、Window

(一)安装Oracle instant Client

根据系统和PHP版本信息去Oracle官网下载相应的Oracle instant Client版本

右键我的电脑,选中属性-高级系统设置-高级-环境变量,在Path中加入Oracle instant Client所在的路径

(二)配置php_oci8_11g拓展

根据phpinfo()的信息,前往oci8拓展下载相应版本的dll,将下载了的dll放到php的ext目录,并且在php.ini配置文件中加入extension=php_oci8_11g.dll,重启php,可以通过命令行调用php -m查看模块是否加载

(三)错误

1.提示"%1 不是有效的 Win32 应用程序"

Oracle instant Client版本有问题,要根据PHP版本来确定Oracle instant Client版本,比如虽然系统是64位,但如果PHP是32位的话,那么Oracle instant Client要选用32位的

二、Linux(redhat6)

(一)下载Oracle instant Client

(二)下载php_oci8源码包

根据phpinfo()的信息,前往oci8拓展下载相应版本的源码包,博主用的是PHP7,因此下载的是oci8-2.1.4.tgz

(三)安装

将Oracle instant Client的sdk包和basic包解压到同一目录,例如我解压到/opt,合并成/opt/instantclient_12_2目录。

[root@rhl6 opt]# unzip instantclient-basic-linux.x64-12.2.0.1.0.zip

[root@rhl6 opt]# unzip instantclient-sdk-linux.x64-12.2.0.1.0.zip

[root@rhl6 opt]# ls

instantclient_12_2

然后解压并编译oci8-2.1.4.tgz,注意编译参数的目录要跟你所解压的Oracle instant Client Lib目录对应

[root@rhl6 opt]# tar zxvf oci8-2.1.4.tgz

[root@rhl6 opt]# cd oci8-2.1.4

[root@rhl6 opt]# phpize

[root@rhl6 opt]# ./configure -with-oci8=instantclient,/opt/instantclient_12_2

[root@rhl6 opt]# make && make install

安装完成后在php.ini加入extension=oci8.so并且重新加载php-fpm/etc/init.d/php-fpm reload即可完成oci8拓展的配置。

(三)错误

1.遇到libclntsh.so not found的错误

给libclntsh.so.*.1做个软连接libclntsh.so

[root@rhl6 opt]# cd /opt/instantclient_12_2

[root@rhl6 instantclient_12_2]# ln -s libclntsh.so.12.1 libclntsh.so

三、Demo

// demo.php

$username = 'user';

$password = 'user12345';

// oracle10格式:[//]host_name[:port][/service_name] 示例://192.168.128.28:1521/USERDEV

// oracle11格式:[//]host_name[:port][/service_name][:server_type][/instance_name] 示例://192.168.128.28:1521/USERDEV

$connectText = '//192.168.128.28:1521/USERDEV';

putenv("NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK");

$conn = oci_connect($username, $password, $connectText);

if (!$conn) {

$e = oci_error();

echo 'Oracle连接失败
';

exit($e['message']);

}

echo 'Oracle连接完成';

// Prepare the statement

$stid = oci_parse($conn, "SELECT * FROM MYDB.USER");

if (!$stid) {

$e = oci_error($conn);

exit($e['message']);

}

// Perform the logic of the query

$r = oci_execute($stid);

if (!$r) {

$e = oci_error($stid);

exit($e['message']);

}

// Fetch the results of the query

print "

while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {

print "

\n";

foreach ($row as $item) {

$item = ($item !== null ? mb_convert_encoding($item, 'utf-8', 'gbk') : " ");

print "

" . $item . "\n";

}

print "

\n";

}

print "

\n";

oci_free_statement($stid);

oci_close($conn);

php mysql oracle_php连接Oracle数据库相关推荐

  1. mysql远程连接oracle数据库服务器配置_远程访问oracle数据库

    Remote access to the oracle database 首先我们在linux下安装的Oracle软件,并创建了数据库,配置了监听 服务器端: 需要开启监听(lsnrctl start ...

  2. codematic2连接mysql失败_怎么连接oracle数据库

    我想连接oracle数据库,但是"服务"那一项不知道填什么,求帮助,非常感谢! -------------------------------------------- tnsna ...

  3. qt mysql 注册码_QT连接Oracle数据库并实现登录验证的操作步骤

    目的: 本文实现QT登录界面,输入账号和密码后,系统连接Oracle数据进行判断账号和密码(MD5加密)是否和数据库一致,如果一致则提示登录成功. 开发环境:Windows10+QT5.14.2+Or ...

  4. oracle sql 导入mysql数据库备份_使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复...

    使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复 这种操作百度一搜一大片,今天整理以前做的项目时自己备份了一下数据库,试着将数据进行导出备份和导入恢复了一下:下面是操作过程: 1 ...

  5. linux下php远程连接mysql_Linux下PHP远程连接Oracle数据库 | 系统运维

    说明: Web服务器环境:CentOS 5.8 32位+Nginx 1.2.3+Mysql 5.5.27+php 5.3.16 Web服务器IP:192.168.21.149 php源码编译目录:/u ...

  6. Navicate Premium连接Oracle数据库报错

    Navicat Premium连接MySQL数据库没有问题,在连接Oracle数据库的时候报错,提示:ORA-28547:connection to server failed,probable Or ...

  7. 跳坑成功,手摸手带你使用PHP连接Oracle数据库

    文章目录 1. Linux版 1.1 安装oracle客户端 1.2 安装oci8扩展 1.3 安装pdo_oci扩展 1.4 测试PHP连接Oracle数据库 2. Windows版 2.1 安装O ...

  8. ssm oracle mysql_ssm连接oracle数据库

    ssm连接oracle数据库 发布时间:2018-06-17 19:04, 浏览次数:1001 , 标签: ssm oracle 之前ssm项目使用的都是mysql数据库,现在要使用oracle数据库 ...

  9. laravel框架连接Oracle,laravel5.8(十四)连接oracle数据库

    首先确定你的PHP已经支持oracle数据库的链接.PHP需要安装OCI8扩展. 确定PHP可以链接ORACLE数据库之后.我们使用composer安装laravel支持oracle链接的插件 yaj ...

最新文章

  1. Vml+Dhtml:制作一个应用渐变颜色效果不错的进度条
  2. JS事件流和事件委托
  3. java key值_java-必须为此操作提供PartitionKey值
  4. RabbitMQ的消息确认ACK机制
  5. Spring boot Tomcat配置
  6. Nginx 反向代理解决跨域问题
  7. zookeeper在Windows底下的安装和使用
  8. .bash_profile .bashrc profile 文件的作用的执行顺序
  9. Linux 命令(74)—— top 命令
  10. verilog之状态机详细解释(二)
  11. 【转】ajax发送请求时候为什么会报拒绝设置不安全的header
  12. is_file() 和 is_dir()注意事项
  13. 计算机网络-第2章 数据通信基础
  14. python语言程序设计实践教程答案实验六_实验6数组程序设计答案
  15. Linux下的好用的图片压缩软件
  16. 改led背光有光斑_为什么把车灯改成LED,效果还不如卤素?
  17. 使用Riverbed SteelCentral NetProfiler,大海捞针不再难
  18. 参加ACM比赛所需的基础知识
  19. OpenStack 归档 - 虚拟机临时存储与块存储
  20. 《数据结构》课程设计报告

热门文章

  1. Wordpress 插件总结和推荐(1)ProfileGrid:用户分组注册、管理;注册审核机制;权限控制
  2. 帝国、PHPCMS及织梦三款CMS比较
  3. 程序猿必备键盘推荐(Keychron),实用炫酷两不误。
  4. 动画的应用,西游记动画效果
  5. [NOIP模拟] 玩积木
  6. 化工原理 --- 流体传送机械
  7. Android KTX举例
  8. 【C++】c++ 11中的随机数 ——random
  9. 界面控件套包DevExpress 2020年首发v20.1.3
  10. 手机wap网站建设的方法和技巧