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

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

 

 

数据库查询-VB资料 数据约束控件和 RecordSet-VB资料 锁住数据库中的表 -VB资料 谈谈VB的数据库编程方式 为VB5辩解: VB处理数据库时求数据表记录总数的最佳方法 为什么安装后的数据库应用总是路径不对或找不到? 返回 -VB资料 无论如何,就是只能输入数字-VB资料 VB用 DAO 或 ADO 正确访问 Access 2000 VB用CELL组件显示Access数据库的图片对象 VB用DAO打开Excel文件 VB用DATA控件绑定报表控件打印报表 VB用EXCEL来打印报表并生成折线图 VB用EXCEL组件简化VB编程的一种方法 VB用MDB文件做密码库 VB用ODBC API访问ODBC数据库 用VB 实现类电子表格的数据录入 用VB5直接控制Excel 97 用VBA编制Access的查询程序 用VB和RDO访问SQL Server 用VB开发多通道仪表数据采集程序 用VB实现关闭所有数据库对象 用VB实现类电子表格的数据录入 VB用代码创建数据库,表,字段 VB用类来编写数据库程序 优化OLE的调用频率-VB资料 语言选择引起的查询错误 -VB资料 远程数据库的访问-VB资料 运用ADO进行数据库表数据互导 -VB资料 在 VB5.0中编辑数据库和电子表格 在Access 2000中用ADO-VB资料 在Access数据库中实现密码管理的另一种方式 -VB资料 我的一用户是/home/user1/public_html/cgi-bin/下的个人主页下运行cgi程序我的htttpd.conf怎么配置!! 怎样在VC6.0打开graphics.h标准库? 请大家帮忙 关于打印的问题! 从哪里下载dotnetbar控件,我很穷,没分了 数字水印的实现问题 请问两个问题,一个关于程序的运行,另外一个关于属性的设置 中文输入法请教. 请问 怎样将table里面某几列的所有数据copy到另外一个表中? 知道对方的 IP地址 ,怎么得到他的机器名?我记得NET命令里有一个可以的,谁知道? 一个报表打印的问题,大家快来帮帮我啊!!! 报表问题快来帮帮我啊!!! 我的word每当保存总是提示内存不足????? 问一下个在VB中使用Oracle的问题? 紧急求救 请问这句话什么意思? 如何得到以前安装 SQL SERVER 的密码 如何把一个字符串中所有指定的字符删除? 那里有delphi深度历险下载,我怎么也搜不到 各位大虾帮帮忙 如何在LINUX下如何安装配置JSDK? 如何挂载usb硬盘?? 使用TrackBar控件的问题 挑战高手, 巨难问题. 有关不同系统(ACCESS, MSSQLSERVER) 的SQL语句兼容问题 奇怪问题:我的光驱,有的光盘能读,有的不能读(比如自己刻录的) SQL Server 安装时的密码,忘了,如何取得,在线等待 挑战高手, 巨难问题. 有关不同系统(ACCESS, MSSQLSERVER) 的SQL语句兼容问题 谁能告诉我,汇编论坛在哪?谢谢 调色板问题 挑战高手, 巨难问题. 有关不同系统(ACCESS, MSSQLSERVER) 的SQL语句兼容问题 如何在WLS7中部署一个Servlet和一个JSP? 挑战高手, 巨难问题. 有关不同系统(ACCESS, MSSQLSERVER) 的SQL语句兼容问题 新手问题: 一个简单的js效果实现问题 吐血送分!关于datagrid的数据更新问题! 为什么不能进大富翁论坛 谁有KV3000啊,传个给我行吗,我下载了好几个都不行, 我有原版盘坏了,谢 VB 怎么调入并执行写好的SQL文件. 今天我生日,郁闷散分 吐血送分!关于datagrid的数据更新问题! 请问powerdesigner生成.sql时,如何在.sql中包含Comment信息 DBGrid改变行的颜色 下载英文Windows的地址 我要在一個按鈕點擊后,開啟另外一個頁面,並且這個頁面自動處於打印預覽狀態,怎麼寫? 正在上升中,公司给自己加薪了,自己却突然心灰意冷. 我想问什么是temporary object?请高手指教 那位大哥在HP-UX下配置过PHP和ORACLE? 宝丽金120首金曲 Dialogs(wdDialogFileOpen)提示ActiveX不能创建对象? 那位朋友知道如何在网络上截取一个信息(数据包) 大家看过dvdrip的片子吗?有一个问题请问 (winform)我想编写一个简单的浏览器,问题1 认识是实践基础上主体对客体的能动反映.可是课本上是认识是主体在实践基础上对客体的能动反映 婚姻不顺,、用英语怎么说 2011迎世园英孚拼词达人赛复赛进半决赛多少分 怎样测量智商 “尸”字下面加个“人”字怎么读RT 如何克服组织变革阻力? 如何测量智商呀? 尸下面有由字的怎么念 从管理心理学来讲,你是如何看待组织变革动力和阻力的? 智商如何测定? 如何理解马克思主义认识论关于认识是主体对客体的能动反映? 求用来形容人是同性恋的词语常用的 请问,智商是怎样测定的?不知道智商测定的原理 引发组织变革的内部因素不包括救命了……4个选项,a、团队之间的冲突b、工作流程的变化c、团队成员方面d、消费者 说同性恋的词有哪些说男的有什么?说女的又有什么?多多益善啊 It has stopped()Let's go out to playraining还是to rain ,rain,rained 组织为什么必须研究内部环境因素? 英语翻译求英语翻译,一定要人工翻译,不要中国式英语:我认为影响人们食物选择的因素有很多,首先食物的选择与食品的色香味有关,随着社会的发展,人们对健康的要求更高,所以人们会选择 Let's go out to play sports.(变为否定句) 求组织变革与发展的关系相关内容或论文内容有关于组织变革与发展的关系的 主要强调关系 或者自己说点看发也行 当然字数越多越好了 海洋最深处有多少米? 这个字念什么,(即“尸”下加“求”. 古代如何形容男子的美,不要诗文,要词语或者是成语是那种比较秀气柔弱【看起来】的男子,用来形容他极美的容貌年轻男子,年龄大概在17到20岁之间 I think this dress ( )me ( )I think this dress ( )me ( )A is fitting ; well B fit ; good C fits well D fitted ; good 一定呀.我明白为何选这一项.以便知识理解透. 酷 用英语怎么拼 简述组织变革实施的程序和方式? do you think this is an __ dress?【pop】we are the ——-aged from13 to 19 years old.[ten] 一个是IQ智商,一个是EQ情商,还有一个是TQ是什么意思? 书上找不到啊!好心的帮帮忙啊〜 think,do,this,you,the,beauiful,dress,is,most 问句连词成句 tq 是什么意思 初二物理. 书上找不到啊!好心的帮帮忙啊〜 一定好评! think do this you the beautiful dress is most 怎么连成一句话说 BL里的TQ是什么意思? How did I change my attitude toward my father?My father was an old revolutionary.He spent the better part of his life on in-fightingduring the Cultural Revolution.Since he was in the turmoil era for so long,he didn't know what the love was and how to 写和颐和园课文有同样顺序 有方位为顺序 马来语中的tq是什么意思是不是谢谢的意思 I could change my habits ,my intelligence,my attitude,my mind,my future,my life. 英语翻译分别用到buy和pay. 请把词语补充完整 change attitude toward是什么意思 那位知道“黑社会”用英语怎么说? 为什么说认识是对客观世界的能动反映? 英语翻译It takes a person looking at life from a different angle to invent a toy like Tangle,and Richard X.Zawitz,the colorful creator of the source of "Twisted Good Fun," is that kind of guy.A child of the 60's who grew up in conservative Pittsb 黑社会和黑帮份子用英语怎么说?别告诉我Black society. 什么是tq It fits you well. do you think合并成一句 有没有知道黑社会,高利贷用英语怎么说? tq动漫什么意思尤其是TQ什么意思 组织变革的模式有几种 哪位知道中文的“黑社会”用英语怎么说啊?与之相关的其他单词也请一并告知, 是格斗比赛中的吗? 什么是组织变革的过程模式 求七年级英语作文2篇 60字左右 不要复制的要自己写的七年级英语作文2篇 60字左右 不要复制的要自己写的 题材不限 GGJJ 一个尸下面一个吊 组成的字念啥. 名正而言顺 用英语怎么说 组织变革过程中包括哪些主要工作? 上面一个尸,下面一个吊的字怎么念? 英语怎么说?动词! 请问大海的最深处有多深?大海的最深处位于地球的什么地方?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘