PHP远程连接oracle数据库操作实现方法图文详解


Posted in PHP onApril 11, 2019

本文实例讲述了PHP远程连接oracle数据库操作实现方法。分享给大家供大家参考,具体如下:

一.以下是基于 wampServer 的php 访问oracle数据库的操作步骤:

1、第一步:让PHP支持OCI

首先,安装PHP的集成运行环境,网上有很多集成,我安装的是WampServer的(具体的安装方法也可以参考之前写的另一篇文章),安装好后,从安装目录中找到php.ini文件,比如我本地的路径是D:\wamp\bin\php\php5.3.3,将php.ini中的php_oci8.dll的;去掉,也就是把注释去掉,相当于可以使用php_oci8了。

PHP远程连接oracle数据库操作实现方法图文详解

2、第二步:然后wampserver运行后,将php>php extentions中将php_oci8打上勾

【其他的集成环境其实也是可以的,比如phpStudy,我们可以直接从php扩展的选项里打勾对应的】。

PHP远程连接oracle数据库操作实现方法图文详解

3、第三步:oracle 数据库文件配置

对于安装有Oracle客户端的PC机,可以在Oracle安装配置文件,tnsnames.ora文件,此文件路径是安装oracle的路径,比如我本机的是

F:\oracle\product\10.2.0\client_1\NETWORK\ADMIN  ,所连的192.168.1.198数据库,其中的配置详情如下(如果显示 127.0.0.1 默认为本机):

(DESCRIPTION =
  (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.198)(PORT = 1521))
  )
  (CONNECT_DATA =
   (SERVICE_NAME = orcl)
  )
 )

4、第四步:检测oci8是否配置成功

①.一般情况下,打开localhost即能显示 phpinfo.php界面,里面即为 php 信息。可采用 “Ctrl+F”搜索“oci”,查看是否有对应的oci模块,当然有一点php基础的完全可以直接访问自己编写的文件,记得里面加入“echo phpinfo();”即可。

②.不要高兴太早,走到这一步,至少我是查不到的对应信息的,这时可以按照网上的一些建议,把php的ext目录下的php_oci8.dll拷到system32目录下

③.最后建议重启服务,最好是重启电脑(我在测试时发现,重启服务没用,有一次是无意中 刷新出了oci扩展,所以如果操作方法没错,我建议进行重启.)

二.代码测试远程连接 orcal 数据库(建议可用自己的oracle客户端试着是否能连接对方的服务端,以保证操作的成功率)

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2015/12/7
 * Time: 16:25
 */
echo 'ff';
//进行连接数据库的参数配置
$dbstr ="(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.11.198)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(INSTANCE_NAME = orcl)))";
//phpinfo();
$conn = oci_connect('scott','tiger',$dbstr);//如果去掉最后一个参数或者为“ ”,默认连接本机
$stmt = oci_parse($conn, "select * from mono");
oci_execute($stmt);
$nrows = oci_fetch_all($stmt, $results);
if ($nrows > 0) {
echo "<table border=\"1\">\n";
echo "<tr>\n";
foreach ($results as $key => $val) {
echo "<th>$key</th>\n";
}
echo "</tr>\n";
for ($i = 0; $i < $nrows; $i++) {
echo "<tr>\n";
foreach ($results as $data) {
echo "<td>$data[$i]</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
} else {
echo "No data found<br />\n";
}
echo " $nrows Records Selected<br />\n";
oci_free_statement($stmt);
oci_close($conn);
?>

(参考网友的一点说明)

两种方式和oracle数据库建立链接

1.

$conn = oci_connect('username','password',"(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST=192.168.1.198)(PORT = 1521))(CONNECT_DATA =(SID=orcl)))");

2.

$conn = oci_connect('username','password','192.168.1.198/orcl');

有的时候第一种方式不行,使用第二种,里面的几个参数分别是用户名、密码、oracle服务地址,其中orcl是服务名(但在我的机器上,后者无法访问)

另外提供一种简单的测试代码,相对而言,只是测试连接情况,更为方便:

<!DOCTYPE HTML>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>php语句结束符</title>
</head>
<body>
<?php
$dbstr ="(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.11.102)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(INSTANCE_NAME = orcl)))";
$dbconn=oci_connect('scott','tiger',$dbstr);
if($dbconn!=false)
{
  echo "连接成功".'<br/>';
  if(OCILogOff($dbconn)==true)
  {
    echo "关闭连接成功!".'<br/>';//
  }
}
else
{
  echo "连接失败".'<br/>';
}
?>
</body>
</html>

总结提示:

使你的php支持oracle,按照以下步骤即可:
1.安装php环境,找一下appserv或者xampp,一键安装,很方便
2.把php的ext目录下的php_oci8.dll拷到system32目录下
3.修改php.ini文件中的配置,去掉  ;extention = php_oci8.dll,去掉前面的分号
4.重启apache

注意:

1.有时候你并不会注意到的一点失误会浪费很多时间,我还要提醒的是,请记得打开oracle的服务监听!!
2.请记得作为服务端的PC机,要关闭防火墙!!
3.apache的配置文件同样重要,修改httpd.conf文件,Deny——>Allow 

<Directory />
  Options FollowSymLinks
  AllowOverride None
  Order deny,allow
#  Deny from all
  Allow from all
#允许所有访问
  Satisfy all
</Directory>
<Directory />
...
...
 #  Require local
Options Indexes FollowSymLinks
#  onlineoffline tag - don't remove
  Order Deny,Allow
  Allow from all
 #  Require local
</Directory>

4.上文中一直提示的SID 或者说oracle服务器名称什么的真的好难懂,我是直接用了配置文件中所显示的名称“orcl”,这个在你安装软件时,会有一个服务名称的提醒,自己默认的orcl而已,估计些其他的名称也是可以的。网上介绍的很乱

如果不知道怎么操作,查看学习文档是最正确的选择,希望能帮到你。

有的时候第一种方式不行,使用第二种,里面的几个参数分别是用户名、密码、oracle服务地址,其中orcl是服务名。

#  Require local

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 截取字符串专题集合
Aug 19 PHP
简单的移动设备检测PHP脚本代码
Feb 19 PHP
有关PHP中MVC的开发经验分享
May 17 PHP
解析php入库和出库
Jun 25 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
Aug 09 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
php连接与操作PostgreSQL数据库的方法
Dec 25 PHP
php数字每三位加逗号的功能函数
Oct 22 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
Oct 16 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
Aug 06 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
Apr 11 #PHP
PHP生成随机码的思路与方法实例探索
Apr 11 #PHP
PHP实现网站应用微信登录功能详解
Apr 11 #PHP
PHP之认识(二)关于Traits的用法详解
Apr 11 #PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
Apr 10 #PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
Apr 10 #PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 10 #PHP
You might like
PHP获取和操作配置文件php.ini的几个函数介绍
2013/06/24 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
xss文件页面内容读取(解决)
2010/11/28 Javascript
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
python批量修改文件名的实现代码
2014/09/01 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
python pillow库的基础使用教程
2021/01/13 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
2014社区三八妇女节活动总结
2014/03/01 职场文书
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
爱与责任演讲稿
2014/05/20 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
开业典礼致辞
2015/07/29 职场文书
厉行节约工作总结
2015/08/12 职场文书
2016年公司新年寄语
2015/08/17 职场文书
教师远程研修感悟
2015/11/18 职场文书