说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

使用PHP来操作Oracle数据库 -PHP初学入门教程12

HTML文档下载 WORD文档下载 PDF文档下载
Oracle被大量在企业应用中采用,因此我们就利用Oracle来进一步介绍PHP与数据库的连接。

 

11. 数据库连接

 

  在上一节里,我们已经介绍了PHP与MySQL数据库的一些基本操作知识,在互联网中有关PHP与MySQL的教程也最多。MySQL是免费的,这一点也许就吸引了不少人。由于其广泛应用,我就不想在这里赘述MySQL的使用方法了。Oracle被大量在企业应用中采用,因此我们就利用Oracle来进一步介绍PHP与数据库的连接。我们当然不会提及Oracle数据库的设计原理,原因是这已经超出了我们的讨论范围。

 

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

  想获得更多有关在Microsoft Windows平台上安装支持PHP3的Apache服务器的知识以及更多有关Oracle数据库的知识,请查阅以下URL:www.csoft.net/~vsbabu/articles/oraphp.html。 

 

11.1 连接

 

<? if ($conn=Ora_Logon("user@TNSNAME","password")) {echo "<B>SUCCESS ! Connected to database<B>n";} else {echo "<B>Failed :-( Could not connect to database<B>n";}Ora_Logoff($conn);phpinfo();?>
以上代码使用TNSNAME(在你的tnsnames.ora文件中指明)定义的Oracle数据库名称、用户名称和密码连接数据库。在成功连接的基础上,ora_logon函数返回一个非零的连接ID并储存在变量$conn中。
11.2 查询
假设与数据库已经连接就绪,下面我们就来实际的应用对数据库的查询。下面的代码演示了一个连接并查询的典型例子:
<?/** 连接数据库并执行查询*/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 failedn";exit;}echo "Connected as connection - <b>$conn</b><br>n";echo "Opening cursor ...<br>n";$cursor=ora_open($conn); printoraerr($cursor);echo "Opened cursor - <b>$cursor</b><br>n";$qry="select user,sysdate from dual";echo "Parsing the query <b>$qry</b> ...<br>n";ora_parse($cursor,$qry,0); printoraerr($cursor);echo "Query parsed <br>n";echo "Executing cursor ...<br>n";ora_exec($cursor); printoraerr($cursor);echo "Executed cursor<br>n";echo "Fetching cursor ...<br>n";while(ora_fetch($cursor)){$user=ora_getcolumn($cursor,0); printoraerr($cursor);$sysdate=ora_getcolumn($cursor,1); printoraerr($cursor);echo " row = <B>$user, $sysdate </B><br>n";}echo "Fetched all records<br>n";echo "Closing cursor ...<br>n";ora_close($cursor);echo "Closed cursor<br>n";echo "Logging off from oracle... <br>n";ora_logoff($conn);echo "Logged off from oracle <br>n";?>
(译者注:以上代码段缺少注释,请读者参考PHP Manual的Oracle数据库函数部分)
11.3 显示结果
以下代码演示了怎样查询数据库并将结果输出:
<?function printoraerr($in_cur, $conn){// 检查Oracle是否出错// 如果存在错误则显示// 当指针被激活时每次请求Oracle后调用该函数// If it encountered an error, we exit immediatelyif(ora_errorcode($in_cur)) {echo "Oracle code - ".ora_error($in_cur)."<br>\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 "<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="2"><TR>n";for ($i=0;$i<$w_numcols;$i++){$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";echo "t<TH VALIGN=TOP ALIGN=$align>".ora_columnname($cursor,$i)."</TH>\n";}echo "</TR>\n";while(ora_fetch($cursor)){echo "<TR>\n";for ($i=0;$i<$w_numcols;$i++) {$align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";if(ora_columntype($cursor,$i)=="LONG")echo "<TD VALIGN=TOP ALIGN=$align><PRE>".ora_getcolumn($cursor,$i)."</PRE></TD>\n";elseecho "<TD VALIGN=TOP ALIGN=$align>".ora_getcolumn($cursor,$i)."</TD>\n";printoraerr($cursor,$conn);}$numrows++;echo "</TR>\n";}if ($numrows==0)echo "<TR><TD COLSPAN="$w_numcols"><B>Query returned no records</B></TD></TR>\n";else {echo "<TR>n";echo "<TH COLSPAN="".($w_numcols-1)."" ALIGN=RIGHT>Count</TH>\n";echo "<TH ALIGN=RIGHT>$numrows</TH>\n";echo "</TR>\n";}echo "</TABLE>\n";ora_close($cursor);return;}// 主程序if(!($conn=ora_logon("user@SID","password"))) {echo "Error: Cannot connect to databasen";exit;}$qry="SELECTdeptno "Dept",empno "Emp",empnm "Name",salary "Salary"FROMemployeeORDER BY 1,2";exequery($qry);ora_logoff($conn);?>
(译者注:以上代码段缺少注释,请读者参考PHP Manual的Oracle数据库函数部分)
11.4 基于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 "<blockquote>You are not authorized to enter the site</blockquote> \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 "<blockquote>You are not authorised to enter the site</blockquote> \n";exit;}}?> 

 

 

Facebook运维内幕曝光:一人管理2万台服务器 《近匠》第10期:友盟——开发服务平台化 LinkedIn耗资1.2亿收购数据驱动招聘服务公司Bright 谷歌推视频会议硬件产品Chromebox 基于Chrome OS 文件上传组件导致Apache DoS安全漏洞 EA,你是来拉仇恨的吗? Beep:前Google员工打造的流媒体音乐控制器 有利于开发App的5款天气预测API 七问微软新CEO,你准备好了吗? Hadoop虽然强大,但不是万能的 Flappy Bird:萌贱游戏日进斗金的烦恼 IT技术支持:索契冬奥会背后的无名英雄 简单10招,让你的云计算事业锦上添花 微软、谷歌及苹果从哪赚钱? 高大上!5.5寸屏幕的iPhone 6概念机来袭 苹果CEO Tim Cook:我们是一家快速发展的公司 2014年美国大学生数学建模竞赛翻译及建模思路 围观龙虎斗:谷歌GCE vs. 亚马逊AWS,要做9件事 未来编程趋势的12个猜想 命令行永存... IBM发布SmartCloud数据虚拟化服务 嚓嚓嚓嚓:虐心的Flappy Bird今日终于下架 Flappy Bird不再“飞翔”后,还剩下什么? 索尼抛售PC业务:内忧外患导致全面退出 慧正通软技术副总裁:工作流引擎厂商的生存之道 TIOBE 2014年2月编程语言排行榜:VB.NET首次进入TOP 10 斯诺登仅用“网络爬虫”软件获取机密文件 全球开发者:iOS、Android、WP哪个最赚钱? 推荐15款响应式Web设计测试工具 开源世界应该致谢的五家公司 Square、LinkedIn、Google... 高薪利器:四大热门云计算认证推荐 陌生的编程任务,该拿你怎么办? 为什么每次在WEB中创建某个ACTIVEX后,在DELPHI中无法重新编译,必须重起系统 JTree控件方面问题 如何得到本机网卡地址 ? 请问,在C++Builder中怎样调用计算机内置扬声器? 谁知道哪有PB7下载? 如何在一个函数中调用另一个函数??????急!!!!!!!!!谢谢了 关于OnNcLButtonUp消息 怎样让我的编辑控件捕捉到enter键 十万火急: 如何把某个text字段的内容写到文本文件中? 求购二手资料:MCSE+MCDBA/SCJP的全套英文资料 有谁知道哪里有Marcocantu 的<>下载?英文版也行!!! 小case。 请问为什么连接的时候,出现StdAfx.sbr': No such file or directory的情况,怎样消除 请问如何获得目录下所有的文件-69!! 如何用vb写共享程序的注册密码部分? Windows 98下可否运行Tomcat? ???????????为什么没有人回答我,难道没有高人????????? 那一种网络监控软件能将两台进行信息交流的计算机的所有信息监控起来! ScrollWindow有什么用?清高手详细说明! 急!:关于ORACLE9的OEM问题,为什么在OEM中不能进入DBA STUDIO,总是提示搜索不到数据库,请问怎么搜索 八数码问题一定有解吗? 如何写库房盘点部分?(讲原理不要讲代码) 小问题,大家帮我解决一下(类型转换问题) 帮忙看一下这样的.Prj 文件是什么C语言工具生成的。早得我好苦呀 控件签名问题!! 救救我,用VB打包后安装的程序运行出错class not registered!有DBGRID控件 java有什么好? 关于Oracle触发器请教: 在弹出的子窗口关闭的同时,父窗口跳转到另一链接如何做,谢谢! TO:enmity(灵感之源) 如何去掉调用Dll在任务栏产生的图标 ORACLE 8的企业版可以糽一台PC上吗? 急救!1000块钱由1分,2分,5分,1角,2角,5角,1元,2元,5元,10元,20元,50元,100元的任意组合,可有多少种组合? 我的电脑有两个内存条(不是一种型号),今天用优化大师优化了一下,结果出现不能启动的现象,请问各位高手如何解决????? 如何在98下设置默认浏览器? to 吴文智 先生 怎样用Adaptive Server Anywhere6.0发布网络版?PB菜鸟求救.... 我的电脑有两个内存条(不是一种型号),今天用优化大师优化了一下,结果出现不能启动的现象,请问各位高手如何解决??? 菜鸟问题,CString 如何转化成整形 !!!在Delphi中不规则窗体的快速显示??? 我的电脑有两个内存条(不是一种型号),今天用优化大师优化了一下,结果出现不能启动的现象,请问各位高手如何解决? 请教大侠!!!!vb调用com组件方法时传递参数类型的问题 updatesql出错: 在java中如何生成可单独安装运行的应用程序呀?就像.exe一样! 请问有没有关于C#的源代码或资料的网站呢? 怎样定位access数据库的路径? 在32代码中调用过16DLL的高手请进! 高分请教!!!!急请大侠帮忙!!!!!!!!!!!!!!! 我的电脑有两个内存条(不是一种型号),今天用优化大师优化了一下,结果出现不能启动的现象,请问各位高手如何解决 -???? 请大家出谋:朋友要离了,怎么安慰她? pfc问题 赞美一种劳动作文400字 鼓励的作文400字 怎么写新闻作文300字 ------赞美 作文400字左右紧急紧急紧急 鼓励 作文400字 5.椎实螺外壳的螺旋方向,右旋对左旋是显性.杂交实验发现当右旋♀×左旋♂时,为右旋;当左旋♀×右旋♂时,时左旋;番茄的果皮颜色红色对黄色为显性,杂交实验结果是当红色♀×黄色♂ 400字的赞美父亲作文 消息作文300字 蜗牛为什么有左旋还有右旋?(人的脑穴哪?) 在1号到12号箱子中各放入12个蛋,其中一箱装的是每个47g的蛋,一箱装的是每个55g的蛋,剩下的十箱装的都是每个50g的蛋.现在从1号箱子中取出1个蛋,从2号箱子中取出2个蛋……从12号箱子中取出12 新闻消息300字作文 一个蜗牛螺壳的旋向为母性影响,其中右旋基因D控制,左旋由基因d控制,一个左旋蜗牛,自交后后代全部为右旋蜗牛,其基因型是_? 在1号到12号箱子中各放入12个蛋,其中一箱装的是每个47g的蛋,一箱装得是每个55g 蛋神奇踪哪个蛋神比较厉害?我想买蛋神 有两蓝鸡蛋,第一蓝56个,第二蓝20个.每次从第一蓝拿3个鸡蛋放入第二蓝,拿多少次,使两个蓝的鸡蛋同样多? 如何将白胶稀释? 蛋神哪买的蛋神奇踪里面的魔蛋浙江附海哪有卖的啊? 写家乡的冬天的作文 湖南的 白乳胶开水稀释比例用水稀释白乳胶,大面积涂刷粘贴```应该比例是多少? 1:600倍水稀释是什么意思 请问,卫星电视天线,左旋和右旋机是什么意思. 白乳胶怎么稀释新买来的白乳胶.有点稠,能直接加水调稀一点吗? 成绩按1 1. 为何卫星要用左旋右旋极化波为何有些俄罗斯卫星要使用左旋右旋极化波这有何好处?为何要用? 怎样稀释白乳胶,让它看起来像水一样? 有机化学里的D和L;阿尔法和贝塔是什么意思?和左右旋有关系吗?什么样的结构就会左旋或右旋? 天道左旋 地道右旋是什么意思?期待答案,不胜感激 变稠的“白胶”用什么来稀释我有瓶粘木头用的白胶现在越来越稠了,平时用量不多,但一直在用.去建材市场买一桶又太多了.问问大家白胶要用什么稀释剂来稀释? D-构型的同一个分子,可以有既右旋又左旋的么?比如:可以有D-(+)-甘油醛和D-(-)甘油醛么?我个人觉得没有。 六年级作文家乡的美食注意:我的家乡在菏泽. 怎么判断螺栓左旋还是右旋? 手性结构,左旋右旋.为啥说这个化学键向外/向里呢?在化学书上看到 为啥说OH是向外的,甲基是向里的 我的家乡特点食品 作文400字写郁南啊,速度(要写特点和食品)(老师还说不能写水果的) 我想要一篇关于三八节赞美女性的文章,最好是要1000字的, 左旋右旋化学如何判断基团的大小优先顺序 关于小狗的作文300字 歌颂祖国的作文怎么写(1000字的) 消息作文300字 狗狗作文300字 求一篇 心中明烛 )是关于赞美老师的作文 800--1000字 《家乡的冬天》作文我的家乡在中国西南 在四川凉山 会东 冬天不怎么冷 以上是我家乡冬天的主要情况 谁可以帮我写一篇《家乡的冬天》的作文 字书在450~500以上就可以了 数学题(篮子里的鸡蛋)往一只空篮子里放鸡蛋,篮子里的鸡蛋数每1分钟增加一倍,放了十二分钟后,篮子刚好放满.在什么时候鸡蛋刚好放到半篮? 84稀释比例1:- 百度 作文《家乡的冬天》500字左右,我的家乡是潮州,没有雪,速度502.为什么 老妇卖鸡蛋,有趣又大方,见人卖一半,还送半个蛋,见了四个人,卖光篮中蛋,请问篮中蛋几何 稀释1倍什么意思 家乡的冬天作文描写冬天的景物,快@@@! 奥数题一篮鸡蛋,第一次拿出了一半多半个,第二次拿出余下的三分之一多三分之一个 稀释率:1倍.顿时头大了,1倍是不是不用稀释啊, 超市卖出14箱鸡蛋,每箱5千克,一共卖了280元,每千克鸡蛋多少元? 葡萄糖溶液的旋向是左旋还是右旋?怎么判断? 风机的左旋右旋是如何定义的 已知超市每千克鸡蛋的售价比进价高1元,全部售完后共赚440元,请问鸡蛋多少千克?某超市用2500元购进一批鸡蛋,销售过程中损耗鸡蛋10千克。已知超市每千克鸡蛋的售价比进价高1元,全部售 稀释限点的含义? 什么是左旋方向?地球转动方向是左旋还是右旋? 某超市在"十一”黄金周期间,第一天售出鸡蛋132千克第二天售出188千克,还剩下百分之75.超市原有鸡蛋多少千克?某超市在"十一”黄金周期间,第一天售出鸡蛋132千克第二天售出188千克,还剩 我的故乡作文450字左右 我要鼓励的作文 400字左右, 目前市场流行右旋VC,右旋是怎么回事?右旋VC真比左旋的好吗? 我的家乡主要写景450字作文要在 5点之前给我
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn