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

使用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;}}?> 

 

 

DARPA慷慨解囊的背后:Python与大数据的火花 研发周报:神奇!1KB JavaScript代码编写的3D蜜蜂 移动周报:65岁传奇Android工程师谈开发 “部落战争”开发商Supercell融资1亿美金 投资公司争先恐后 Kiip 90后华裔励志故事:从遭解雇到誉满全球 大数据基因测序的成本逼近1000美元:个性化医疗的时代来临 携程开放平台发力 将实现旗下产品全流程API支持 Puppet labs发布2013自动化运维报告 “国”字号开发者:航旅纵横负责人薄满辉专访 金山云杨钢:核心算法保证安全和低成本 加速软件交付 企业级模拟测试服务CA LISA受追捧 盛大云业务重点转向自服务 转战中小型企业:Prediction API请求一个月内飙升至7亿多次 利用光子 耶鲁大学研究人员让量子计算机离现实更近一步 技术为王的云计算会让IT部门消亡么? 从Discuz到APP:安米移动社区转化工具 覆盖全领域:Google、Facebook、Twitter等大师的最佳推荐 苹果CEO宣布更改保修政策 并向中国用户道歉 拒绝使用现有Web组件的6个愚蠢理由 Github宣布支持SVN方式访问 iPad,正在改变什么? Go Mobile:行业大牛谈行业应用开发 亚马逊Cloud Drive新增文件同步功能 对抗Dropbox 35万奖金发放,BlackBerry 10大赛奖项揭晓 超越Google Apps:排行榜前10的相关云应用 荣耀终将消散 全球第一台千万亿次级超级计算机退役 谷歌已推免费Android和iPhone版Quickoffice,微软你呢? 用于响应式设计的9个CSS技巧 微软Surface Pro正式登陆中国市场 售价6588元起 岳雷:Windows Server 2012虚拟化性能提升巨大 陈健:Windows Server 2012让企业轻松管理IT 有谁熟悉DB2?(关于VW中元数据!) 如何将光盘中的一个子目录映射成一个硬盘盘符? 关于Applet!请指教 我现在要做一个象性能监视中的显示表格(使用VC),监视网络流量,和Media Server 的Stream。有没有低层的API? 蚂蚁下载 关于弹出窗口的问题 串口通讯的问题 关于_RecordsetPtr的一个问题,百思不得其解,请求帮助。 文档中心的帖子怎么收藏? 怎么在java中向一个sql语句传参数,就像oracle的proc一样啊? 如何有一个人成分6000行的文本文件,请问如何预览后打印出来. 其他应用程序能调用notes中的代理吗 ?在我的表中设了一字段PKID,此字段是主键并且自增,当我插入一条记录时,我如何取得此记录的PKID(Hothehe) 这个帖子怎么打不开? 急需解 请问高手,设计一个分时系统要注意些什么? 哪有c++builder6的帮助和列子 SourceSafe客户端登陆问题 呵呵,几天没来,这里全变样了,不错不错,漂亮多了。另外,提点建议。 在C/C++ 程序中怎样延时? 用sql语句,怎样取最后10条记录, 然后是最后第20-10条 , 30-20条 cockhorse(木马)来拿分,另找WindowsCE.net 我刚请我1个要好的朋友(但是很穷)吃饭 如何清空数据日志呢? 没人回答,我再问一遍关于ADODataSet中参数传递的问题 如何删除一个被定义主键的表 关于ListBox,请教!(在线等待) tomcat4配置问题!请高手指教! jsp程序如保加密呀让其它人查看不到原文件,但能在服务器上运行. 请问: 有时将Dephi5最小化,作了别的windows操作后,再返回时提示………… _RecordsetPtr的问题,急……… 有关键盘和鼠标的问题 大家好!一个新手的问题。希望得到大家的帮助! 关于COM和ALT有什么好书吗? select max()的语法怎么用,怎么就是不对。 怎么才能够给在程序运行时动态生成的控件添加事件代码?请教有方法吗? WIN2000路由nat的问题 拿到scjp,工资起价要多少? 大家好!一个新手的问题。希望得到大家的帮助! 在大连找做BCB很难,也很苦恼,难道就没人用他吗??谁知道有没有大连公司用BCB。请回答 我将十分关注!!!!!!!!!! 有谁知道j2ee服务器EJB的客户端代码是怎样的? 那位高手帮我做个毕设(销售管理系统) to txinfo(冰炎两重天) To; net_lover(孟子E章),这个函数没有得到任何值,而且提示网页Javascript出错了! 我忘了开多次方 的函数了请告之! 建表问题 我用wise install 打包vb6的程序,可runtimes打不进去,请帮忙 寻李维的四套delphi电子书,在哪儿下?每套20分,第一个正确的给分 有没有人用过xa方法呀 如何在全局函数中对传入的dw参数取出其所在的window,而不另传一window参数? 请问斑竹LIULEE:为何我的Jaguar CTS 3.6.1中的菜单和对话框中的字母多是小方块 什么时候设置oracle的总内存数? Unix 字符用户界面,为什么menu库不能调用,在curses库却可以? 酒精是怎么减缓神经冲动传导的?简述其机制! 火柴梗在燃烧时,火焰向上为什么容易熄灭? 不锈钢焊点怎么生锈了 性行为,为什么能刺激神经兴奋. 火是什么?是由什么物质构成的吗,为什么谁可以熄灭火,为什么划火柴就会产生火? 凡士林进入滴定管洗不出来怎么办?可能活塞处涂多了!进入下面的小管了,洗不出来,有什么办法? 求 考研题 论述神经细胞兴奋时 兴奋性变化过程及其生理意义 火柴是磷做的,火柴合上划火柴的哪部分是什么材枓做的呀? 哪里可以买到酸式滴定管的玻璃塞?酸式滴定管上的玻璃塞没了,问了一家试剂商店,说是不单卖,我就是想看看能不能配上 湿纸放在酒精粉上为什么烧不着? 实验室 划火柴和熄灭火柴的方法 如果酸式滴定管的出口被涂旋塞的凡士林严重堵塞,正确的处理方法是 汗液中滴入硝酸银溶液,有什么现象 《划火柴》歌词是什么意思?《划火柴》歌词是什么意思?《划火柴》歌词是什么意思? 如果酸式滴定管出现凡士林堵塞管口,应如何处理 酒精能让人兴奋吗想试试没酒量,不知道能不能让人兴奋 气液平衡数据在哪里查 酸式滴定管涂抹了凡士林后还是会漏,用的是白凡士林,为什么呢?试过还多次都一样大概1min一滴 汞、镉、铅和部分氮的元素符号为___的氧化物 纸为什么在混合三分之二的酒精三分之一的水中浸泡后就烧不坏? 求常压101.33kpa下 乙醇-正丙醇混合液的气液平衡组成(摩尔)与温度的关系数据本人要做化工原理的课程设计 找不到这个的气液平衡组成关系 铜锈的化学式铜锈形成的化学方程式 湿纸放在酒精灯上烧不着是因为纸是湿的吗 圆珠笔芯的塑料部分是怎么跟金属笔头连接的?有专门的机器吗?还有笔油是怎么加进笔芯里去的? 原子核外M层上比L层少2个电子的原子,其元素符号是 ,原子结构示意图是.核外有2个电子层,带2个单位的负电荷的微粒,其结构示意图是 ,微粒符号是 向过量硝酸银溶液中滴入少量Na2S2O3溶液 的反应方程式 向过量的Na2S2O3溶液钟加入少量硝酸银的方程式 常压条件下乙醇-水溶液的气液平衡数据哪有? 索氏提取法提取咖啡因为什么用95%乙醇而不是更高浓度乙醇?对实验结果将会产生什么影响? 怎么清洗眼镜布?清楚说明下/谢谢我的眼镜布抹久了就脏想清洗下 求 丙酮-水 的气液平衡数据!我用左化工原理的课程设计的~找了好久都找不到 1汞是属于什么 是固态非金属 还是金属.2什么物质可是直接用元素符号表示3为什么离子化合物肯定有金属原子但不一定有金属元素?3 元素的定义我知道 但不知道怎么了解 上面2个最好举例下 眼镜布是用来擦眼镜还是包眼镜? 圆珠笔分为那几个部分例如:笔芯、外壳之类的 请问,700ml95度的酒精要稀释成60度,需要加多少水?如题.有无公式之类的呢? CuSO4溶液与铁粉离子方程式 偏铝酸钠溶液与氯化铵反应的化学方程式 用氢氧化钠改良酸性土壤为什么不对? 不同浓度酒精都有什么用途? 盐酸分别与硫化钠,硫代硫酸钠,铝酸钠,硫酸钠溶液反应的化学方程式? 镁铝锌铁与盐酸硫酸的反应式是什么?一共有8个.请一一列举! 不同浓度酒精都有哪些用途? 某化学实验小组欲探究盐酸、氢氧化钙的化学性质,取8支试管分别用A-H编号后,做如下实验.我知道答案 某化学实验小组欲探究盐酸、氢氧化钙的化学性质,取8支试管分别用A-H编号后,做如下 关于乙醇的折射率!【有效期至2008年10月21日】?thank you!thanks!请问:室温下,纯水与无水乙醇的折光率各为多少?乙醇的水溶液分别为以下浓度时,其折光率各为多少?0.50mol/L 0.55mol/L 将铁粉和铜粉的混合物放入硝酸银溶液中,反应结束后,剩余固体成分是什么?A.肯定有银 B.肯定有铜 C.可能有铁 D.可能有铁和银 在一个棱长为10cm的正方体木材的相对的两个面中掏出一个边长为1cm的正方形小孔,这个图形的表面积和体积是 工业酒精中乙醇浓度是按什么划分的? 常温下,钾、钡、钙、钠+水=()+()及其化学方程式 用棱长为1cm的小正方体对方称边长为10cm的大正方体,共需要小正方体()个 乙醇的折光指数是多少? 水和钾,钙,钠,钡反应的化学式是什么? 硫酸铜加入碳酸钠中和碳酸钠加入硫酸铜中现象一样么都是溶液 向盛有少量氯化钠溶液的试管中滴加硝酸银溶液,生成白色沉淀,继续向试管里滴加氨水,沉淀消失, 钾钙钠钡和溶液反应钾钙钠钡为什么不会与金属溶液反应? 碳酸钙化学式是什么啊? 急,圆珠笔笔油弄到皮沙发上了,怎么清洁 铵钾钠钡钙,除了这5种元素,其余元素都不溶于水,生成沉淀, 为什么不锈钢的焊点会生锈例如不锈钢防盗网 为什么酒精作用于身体神经先兴奋 后压抑或者抑制1.能否改变 就是不断兴奋 或者能够通过加大饮酒量达到效果?2.这个机理(酒精作用于身体神经先兴奋 后压抑或者抑制)是什么卧个槽 全是 划火柴时火柴梗向上火焰会熄灭吗会熄灭吗为什么?是不是它接触不到氧气 不锈钢焊点生锈怎么办
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘