用PHP连接Oracle数据库


Posted in PHP onOctober 09, 2006

通过PHP你可以轻松的连接到数据库,请求数据并将其显示在你的web站点中,甚至修改数据库中的数据。MySQL是一种很流行的数据库,并且在互联网中有许多有关PHP与MySQL的教程。MySQL是免费的,这一点也许就吸引了不少人。由于其广泛应用,我就不想在这里赘述MySQL的使用方法了。Oracle被大量在企业应用中采用,因此我们就利用Oracle来介绍PHP与数据库的连接。我们当然不会提及Oracle数据库的设计原理,原因是这已经超出了我们的讨论范围。 

PHP提供了两套函数与Oracle连接,分别是ORA_和OCI函数。其中ORA_函数略显陈旧。OCI函数更新据说更好一些。两者的使用语法几乎相差无几。你的PHP安装选项应该可以支持两者的使用。 

连接 

< ? if ($conn=Ora_Logon("user@TNSNAME","password")) 
{ echo "SUCCESS ! Connected to database\n"; 
}else 
{echo "Failed :-( Could not connect to database\n";} 
Ora_Logoff($conn); 
phpinfo(); 
?> 

以上代码使用TNSNAME(在你的tnsnames.ora文件中指明)定义的Oracle数据库名称、用户名称和密码连接数据库。在成功连接的基础上,ora_logon函数返回一个非零的连接ID并储存在变量$conn中。 

查询 

假设与数据库已经连接就绪,下面我们就来实际的应用对数据库的查询。下面的代码演示了一个连接并查询的典型例子: 

function printoraerr($in_cur) 

// 检查Oracle是否出错 
// 如果存在错误则显示 
// 当指针被激活时每次请求Oracle后调用该函数 
if(ora_errorcode($in_cur)) 
echo "Oracle code - ".ora_error($in_cur)."\n"; 
return; 

if (!($conn=ora_logon("user@TNSNAME","password"))) 
{echo "Connection to database failed\n"; 
exit; 

echo "Connected as connection - $conn \n"; 
echo "Opening cursor ... \n"; 
$cursor=ora_open($conn); printoraerr($cursor); 
echo "Opened cursor - $cursor \n"; 
$qry="select user,sysdate from dual"; 
echo "Parsing the query $qry ... \n"; 
ora_parse($cursor,$qry,0); printoraerr($cursor); 
echo "Query parsed \n"; 
echo "Executing cursor ... \n"; 
ora_exec($cursor); printoraerr($cursor); 
echo "Executed cursor \n"; 
echo "Fetching cursor ... \n"; 
while(ora_fetch($cursor)) 

$user=ora_getcolumn($cursor,0); printoraerr($cursor); 
$sysdate=ora_getcolumn($cursor,1); printoraerr($cursor); 
echo " row = $user, $sysdate \n"; 

echo "Fetched all records \n"; 
echo "Closing cursor ... \n"; 
ora_close($cursor); 
echo "Closed cursor \n"; 
echo "Logging off from oracle... \n"; 
ora_logoff($conn); 
echo "Logged off from oracle \n"; 
?> 

显示结果

以下代码演示了怎样查询数据库并将结果输出: 

function printoraerr($in_cur, $conn) 

// 检查Oracle是否出错 
// 如果存在错误则显示 
// 当指针被激活时每次请求Oracle后调用该函数 
// If it encountered an error, we exit immediately 
if(ora_errorcode($in_cur)) 
{echo "Oracle code - ".ora_error($in_cur)." n"; 
ora_logoff($conn); 
exit; 

return; 

function exequery($w_qry,$conn) 

$cursor=ora_open($conn); printoraerr($cursor,$conn); 
ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn); 
ora_exec($cursor); printoraerr($cursor,$conn); 
$numrows=0; 
$w_numcols=ora_numcols($cursor); 
// 显示头部 
echo " \n"; 
for ($i=0;$i<$w_numcols;$i++) 

$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"; 
echo "\t ".ora_columnname($cursor,$i)." \n"; 

echo " \n"; 
while(ora_fetch($cursor)) 

echo " \n"; 
for ($i=0;$i<$w_numcols;$i++) 

$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"; 
if(ora_columntype($cursor,$i)=="LONG") 
echo " ". 
ora_getcolumn($cursor,$i)." \n"; 
else 
echo " ".ora_getcolumn($cursor,$i)." \n"; 
printoraerr($cursor,$conn); 

$numrows++; 
echo " \n"; 

if ($numrows==0) 
echo " Query returned no records \n"; 
else 

echo " \n"; 
echo " Count \n"; 
echo " $numrows \n"; 
echo " \n"; 

echo " \n"; 
ora_close($cursor); 
return; 

// 主程序 
if(!($conn=ora_logon("user@SID","password"))) 

echo "Error: Cannot connect to database\n"; 
exit; 

$qry="SELECT 
deptno \"Dept\" 
,empno \"Emp\" 
,empnm \"Name\" 
,salary \"Salary\" 
FROM 
employee 
ORDER BY 1,2"; 
exequery($qry); 
ora_logoff($conn); 
?> 

基于HTTP的Oracle登录

将以下代码加在PHP页面代码之前以确认Oracle登录。注意你必须正确设定$ SID。

if(!isset($PHP_AUTH_USER)) 

Header("WWW-authenticate: basic realm=\"$SID\""); 
Header("HTTP/1.0 401 Unauthorized"); 
$title="Login Instructions"; 
echo " 
You are not authorized to enter the site 
\n"; 
exit; 

else 

if (!($conn=ora_logon("$PHP_AUTH_USER@$SID",$PHP_AUTH_PW))) 
{Header("WWW-authenticate: basic realm=\"$SID\""); 
Header("HTTP/1.0 401 Unauthorized"); 
$title="Login Instructions"; 
echo " 
You are not authorised to enter the site 
\n"; 
exit; 
}} 
?> 

PHP 相关文章推荐
提取HTML标签
Oct 09 PHP
色色整理的PHP面试题集锦
Mar 08 PHP
解析php中static,const与define的使用区别
Jun 18 PHP
php使用百度翻译api示例分享
Jan 31 PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 PHP
php实现字符串首字母大写和单词首字母大写的方法
Mar 14 PHP
php实现统计网站在线人数的方法
May 12 PHP
PHP实现远程下载文件到本地
May 17 PHP
php动态绑定变量的用法
Jun 16 PHP
PHP中CheckBox多选框上传失败的代码写法
Feb 13 PHP
php的单例模式及应用场景详解
Feb 27 PHP
PHP7 弃用功能
Mar 09 PHP
PHP面向对象编程快速入门
Oct 09 #PHP
PHP模拟SQL Server的两个日期处理函数
Oct 09 #PHP
PHP实现的功能是显示8条基色色带
Oct 09 #PHP
提升PHP执行速度全攻略(上)
Oct 09 #PHP
提升PHP执行速度全攻略(下)
Oct 09 #PHP
如何过滤高亮显示非法字符
Oct 09 #PHP
无限级别菜单的实现
Oct 09 #PHP
You might like
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
2018/04/20 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
2020/04/13 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
python dict remove数组删除(del,pop)
2013/03/24 Python
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
Python中的多行注释文档编写风格汇总
2016/06/16 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
2018/05/11 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
django连接oracle时setting 配置方法
2019/08/29 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
python文件读取失败怎么处理
2020/06/23 Python
Python之Sklearn使用入门教程
2021/02/19 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
房地产销售大学生自我评价分享
2013/11/11 职场文书
工商学院毕业生自荐信
2013/11/12 职场文书
直接有效的自我评价
2014/01/11 职场文书
环保建议书
2014/03/12 职场文书
求职自我评价范文100字
2014/09/23 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
小学工作总结2015
2015/05/04 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
php修改word的实例方法
2021/11/17 PHP
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android