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

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

 

 

Kinect SDK v1.7迎来重大更新 如何激励同事编写单元测试? 谷歌GCE vs. 亚马逊EC2:快源于谷歌本有的底蕴 不要责怪开源技术 它是无辜的 短命:微软将于2014年停止对WP8系统支持 Native和Web过时了,企业级移动开发流行用Hybrid App 与EverNote竞争?谷歌Google Keep浮出水面 又一次跨越:著名3D游戏引擎Unity版本更新 Feedly团队:自研后端平台或将开源 StackMob的诱惑:16小时,山寨一款移动App “云”筹帷幄 开发者必知的5大SaaS在线服务工具 超350个政府项目托管在GitHub 政府开源会成主流? Kinect for Windows SDK 1.7正式发布,支持3D建模 SafeNet与风河系统联手推出VxWorks嵌入式系统软件货币化方案 Windows Server 2012中的动态负载均衡 Google等互联网公司将成为创新中心? 在Hadoop的战争中 MapR获新一轮3000万美元融资 初创公司DNNresearch:谷歌科技帝国的新“基石” 创业了,我们该如何起名? 乐视网联手富士康推新盒子C1S “0+290元”新浪微博发售 吸引开发者:只要开发新应用 微软便奖100美元 PaintCode - 将矢量图转化为Objective-C代码的开发神器 苹果发布iOS 6.1.3 封杀evasi0n越狱所用漏洞 [API快讯] Google开放实时协作API 58同城开源轻量级Java Web框架 Argo 初创公司AppNeta:4轮融资,4780万美元 MongoDB释放2.4版本:692更新及8大得意之作 十年6亿美元!Amazon云计算喜获CIA大单! 国人当自强:HTML5+联盟首次筹备会成功举行 开源框架TAAE发布 快速打造iOS音频应用 如何学会600多种编程语言 怎么在EXCEL中用VBA控制图表的位置? Delphi确实很好,学了好几年了,但在上海差点没有找到工作,很少有招学Delphi的 关于 VC 6.0 有没有什么补丁,升级文件之类的东西? 高分争解 怎么利用Jsp发邮件? 有谁知道光驱加锁的问题 parodox数据库问题 各位平时用 VC 作东西,都用那些辅助工具?  高分争解 【 http://www.esoftware.com.cn/search.php?condition=%BA%AB%C1%F7%C0%B4%CF%AE&page=1&mode=3 】 JBuilder的使用问题 在VFP中,编程执行SQL语句时,怎样使系统的查询结果不出现? 一个程序流程的问题 为什么当我的SpeedButton的enabled为false时,上面的图标就没有了? 囡囡(baicolt)请进,问你一点事情 简单问题,请赐教 高分相赠!!!:操作系统和SQL SEVER2000都是英文版,用VB连接如何可以正确的输入和显示中文? 则么在程序中得到sql的存储过程的返回值? 请问 VB 6.0 有没有最新的升级文件之类的东西?高分争解 谢谢 谁有用java做的复杂一点的图行界面的例子 网管来看看,为什么不能给分了!右边的文本框又不见了! 各位用 VB 编程都用那些辅助工具? 高分争解 关于ShellExecute 装了redhat7,在/etc里没有inetd.conf文件,谁见过这咋整 菜鸟请教大侠!很急!谢谢!!只有10分对不起! 请问一个关于CLASSWIZARD 的问题 这里有PB反编译程序,你信吗? 怎样解 关于大数据量的问题,经验丰富者里面谈! 我想在程序里控制程序外的浏览器窗口资源管理器窗口,怎么做呢?急呀!!!!!! 请问:我用JavaMail收下的邮件主题,发信人姓名不能正常显示。。。。。 认识我的人都进来跟我聊聊吧,我最近新换了工作,还没有适应,你们各位是怎么换工作? 请问如何在Delphi中表示二进制,或者十六进制数呢? 各位35以后干什么?我们能干什么? ????? 如何将eltree中的数据和某数据表关联 有没有比RECORDCOUNT快的方法实现同样的功能? 鉴于目前有些东西说话不知轻重,把这个旧闻再贴一遍,不要以为真的在网上 “没人知道你是一只狗” Java 工具 怎样解决vb中编译成exe文件中出现的问题? 你别说国企,只要是沾的国企的气味就他妈的黑! api函数我不懂。 我要开发一个网络监听的程序,捕获所有以太网中所有的帧,象NT和Win2000中的网络监视器一样 找了半天,看不到一个熟人,认识的过来报到 请问哪里有下载jdk啊? 问题征集算法 偶烦!偶郁闷!咿呀~~~~~~~~老哥进来安慰偶。。。。快!快!快!!! 在ListView中,如何象Windows资源管理器那样将剪贴了的文件图标变虚? 清华大学的学生素质真差 打开数据库为什么出错? WinCE的串口通讯读和写之间有相互制约的问题吗? 强烈抗议IBM蓝色“快”车服务的速度和质量!!各位同志请帮我广帖出去! outlook 求助 jsp的小问题 制取乙酸乙酯的化学反应方程式? 化学方程式化合价配平 氢化钙 钙鉴别能用与水反应生成的氢气的量吗物质的量相同 工业制取漂白粉的化学方程式? 化学方程式配平利用化合价升降的方法 为什么登山制取氢气用氢化钙而不电解水?制取同等质量的氢气需要的水的质量要比氢化钙要少,负担更少,而且电解水还能产生氧气,为社么登山制取氢气用氧化钙而不电解水? 制取四氧化三铁的化学反应方程式 如何用化合价升降配平化学方程式 化学题设计个过氧化钠的小实验过氧化钠保存不当容易变质1,某过氧化钠样品已经部分变质,请设计实验,限用一种溶液,证明过氧化钠已经变质2,检验样品中还有过氧化钠的方法是都回答得很好 工业制取Cu2O的方法以及相关化学反应方程式 在一个化学反应式中同一元素在反应前后化合价能变么? 设计试验(化学)现在就要!1.设计试验证明二氧化碳具有下述性质:(1)二氧化碳的密度比空气的大;(2)二氧化碳能溶与水.2.设计实验证明汽水中含有二氧化碳.(别太复杂) 氢化钙CaH2与冰反应放出氢气,生成对应的碱.(要化学方程式)(生成的碱沉淀吗?) 求一个化学方程式:反应前后元素的化合价没有改变的化合反应 化学设计实验现有一白色粉末是由氯化钠、硫酸钠中的一种或两种共同组成.给你四种溶液:硝酸银溶液、氢氧化钠溶液、碳酸钠溶液、硝酸钡溶液,要你证明此粉末只由硫酸钠组成(两步). CaH2+2H2O====Ca(OH)2+H2中哪个是还原剂,哪个是氧化剂,哪个是还原产物,哪个是氧化产物?请把化合价的升降情况等等详细描述 化学反应方程式与化合价的问题是不是还有一种情况用对应符号的问题 HCL~H 这样的写法.问题主要在这里:这种对应符号的写法与化合价有关系么?为什么?我的问题来源于这个方程式的疑问 求5篇化学家庭实验 实验报告拜托各位高手帮我找5篇家庭小实验的实验报告包括目的.步骤.现象.结论注意:要是家里能做的实验.最好是收集沼气,、葱汁写密信、收集沼气.要5篇啊,谢谢如果 登山队员常用的能源是氢化钙(CaH2)固体,它和水反应生成氢氧化钙和氢气(CaH2+2H2O═Ca(OH)2+2H2↑),求氧化钙中钙、氢元素的原子个数之比为?氢元素的质量份数为?(精确到0.1%) 怎样快速判断氧化剂还原剂 例如CaH2+2H2O=Ca(OH)2+2H2↑ 到底谁是氧化剂还原剂氧怎样快速判断氧化剂还原剂 例如CaH2+2H2O=Ca(OH)2+2H2↑ 到底谁是氧化剂还原剂氧化产物还原产物 为什么?那氢 化学方程式物质化合价如何改变?有的方程式反应前后化合价改变,比如三价铁反应后变成二价铁,这样的规律是什么? 登山队员常用的能源物质是氢化钙(CaH2)固体,用它和水反应生成氢氧化钙和氧气,氢气供燃烧之需.(1)写出氢化钙和水反应的化学方程式(2)写出氢气燃烧的化学方程式 CaH2+2H2O=Ca〔OH〕2+2H2↑,该反应中化合价的升降关系如何,哪个是还原剂哪个是氧化剂 关于化学方程式与化合价.“O正上方一个-2”中-2代表什么?“2O”的O右上方有一个-2,这个-2代表什么? 金属钙与水反应方程式急啊-------要准确的! 请问怎么看出CaH2+2H2O=Ca(oH)2+2H2是归中麻烦说详细一点 怎么用化合价写化学方程式比如Fe+O2--- 怎么写后面的生成物、、怎么用化合价写他们下面的小数字、 钙单质和水反应的化学方程式 反应CaH2 + 2H2O = Ca(OH)2 + 2H2中氢氧化钙是什么 为什么氢氧化钙的化学式是Ca(OH)2?为什么氢氧化钙的化学式Ca(OH)2和其他有些物质的化学式要加括号?是因为这样简便些么? 氧化钙与水反应的化学方程式 CaH2中的氢元素呈负一价.CaH2+H2O=Ca(OH)2+2h2其中水是还原剂还是氧化剂或者都是或都不是? 硝酸HNO3和氢氧化钙Ca(OH)2 写出过氧化钙与水反应的化学方程式.[过氧化钙CaO2]要配平.过氧化钙与水反应生成氢氧化钙与氧气。 硅酸钙(CaSiO3)是玻璃的主要成分之一.硅酸钙中Si的化合价是A.+2 B.+3 C.-4 D.+4 氢氧化钙化学式Ca(OH)2 为啥oh要加括号 生石灰与水反应的化学方程式 普通玻璃的主要成分是二氧化硅还是硅酸钙如果是二氧化硅,为什么一个推论题中说A是普通玻璃的主要成分,答案却是硅酸钙那个题错了吗?错得也太低级了吧、 CaH2 + 2H2O====2H2 + Ca(OH)2.氧化剂与还原剂的比值是多少? 氧化钙与水反应的化学方程式及现象 请问大家硅酸钙CaSiO3是沉淀吗? 化学变化的分辨有放热,发光,生成沉淀,生成气体或颜色变化现象发生的一定是化学变化吗?请各举一例加以说明 过氧化钙与水反应的化学方程式是什么? 硅酸钙(即CaSiO3)是沉淀物吗?硅酸钙是不溶于水的那种化合物吗? 怎么区分物理和化学变化酒精蒸发是什么变化 氢化钙的制备装置图 氧化反应化学方程式上怎样判断元素的化合价 和化学变化的区别在于? 氢化钙取氢气的好处生活中为什么不用这种方法制取氢气 亚氯酸钠与氯气反应化学方程式.各元素的化合价是多少? 如何区分化学中物质的性质与变化举出具体事例说明 金属氢化物是如何制备的?如氢化钠,氢化钙 根据元素化合价发生的变化,各写出一个相应的化学方程式,并确定发生还原反应的是哪个反应.1.0—————+12.+2————03.-1————04.+1————0并且好,本人决不食言 现象和变化的区别 氯化铵和氢化钙反应生成什么气体? 如何利用化合价升降给化学方程式配平 登上运动员用氢化钙CaH2固体提供能源有什么优点 生产轻质碳酸钙的化学反应方程式 利用化合价升降配平化学方程式FeTiO3+C+Cl2 --- TiCl4+FeCl3+COTiCl4+O2 --- TiO2+Cl2 能否用燃烧现象鉴别氢化钙和钙?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn