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

使用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如何让点阵打印机每次印出一行? VB如何设计一个可中断循环的按钮。 VB如何实现VB程序登录密码加密 VB如何使程序不出现在任务列表中 VB如何使键盘、Mouse失效(JournalPlayBack Hook) VB如何使用 DBGrid VB如何突破 TextBox 32K 的限制? VB如何为执行程序加上参数? VB如何压缩较长的全路径文件名中的路径 (Path) 字串长度? VB如何在VB中实现密码的读取 如何在VB中使用命令行参数 VB如何在内存中的指定位置取数据? VB如何在已经存在的文本的textbox添加新的一行 VB如何在資料庫中存入單引號? VB如何正确使用VB6访问Access2000数据库 VB如何自动记录计算机开机时间? VB如何做到当我们单击窗体的最小化和关闭按钮时,窗体先最小化到任务栏成为按钮,然后消失呢?金山词霸能 软件工程篇-Const与#Const的对比 -VB资料 软件工程篇-从Visual Data Manager开始 -VB资料 软件工程篇-理解错误处理代理 -VB资料 软件工程篇-清空集合内容的几种方法 -VB资料 软件工程篇-受限制的共享软件Shareware -VB资料 设定CapsLock ScrollLock NumLock-VB资料 设置计算机名称-VB资料 深入SERIPTING RUNTIME LIBRARY-VB资料 &#39;识别常数的简单四则运算-VB资料 实现平面工具栏 -VB资料 使程序不在 Ctrl+Alt+Del 弹出的对话框内-VB资料 VB使用 API 开始屏幕保护 VB使用rdoPreparedStatement实现参数化查询 使用Vb5制作Easter Egg ado+intraweb中如何调用coInitialize? 寻找最恶心的笑话 一些对未来的思索、问题,各位来谈谈 有谁知道用哪款打印机比较好呢? 关于类和接口设计问题 如何能把98 聯入2000 如何做一个后台管理-数据库备份程序 如果我用一个Winsock(index)控件数组。Winsock(1)、Winsock(2)同时调用一个延时函数会出什么问题吗? 已知表中字段ID的值,如何定位到这个字段? 谁知道为什么会出这种错误fatal error C1004: unexpected end of file found 小小问题,也有小小的分,不成敬意。 visio ,rose ,ERwin 他们各自的用途是什么,有什么区别呀? Oracle安装的问题——寻求帮忙!!!! 请问Crystal(水晶)报表如何对TextBox进行动态绑定字段? 如何设定mapx图层的颜色 对汇编的渴望! 谁有Asp做的网站?100分奉上! 都进来看看 vc新兵问函数调用菜鸟问题 紧急求救!!!! 谁有delphi关于ado编程 的资料啊(要详细一点的) TreeView的问题,很实在的问题。 关于在PB上实现错误事件处理!!! 关于组件的停靠 用VB.NET连接数据库老是连不了,快精神分裂了,救命啊! 关于SendMessage(高分相送,紧急) 急!!!高手进! 在查找结果中如果某一字段的值相等,只取出其中一条的问题! squid的安装问题???????????????????? SQL语句问题? 冒昧求救,光驱不能使用,不能boot 我的主机总收到外面发的广告信息? 高分求助急!!! 见鬼了,我添加一个TServerSocket控件,然后编译出现:Declaration terminate incorrectly 有谁知道用哪款打印机比较好呢? 按钮BitBtn1上有图片,在图片上写字的问题。(在先给分!) cystal reports 8.5 english显示繁体问题,急,等待 Unix下用什么源代码检测工具比较好? 我的电脑出什么问题了?各位帮帮忙 界面导航如何分类? 怎样得到本机的网卡号??? %¥#问个小问题,知道的都来抢分啊 谁知道哪儿有支持认证的SMTP组件下载? 有什么软件能查看PE文件的? ADO问题!!!! 100分求购最简单的串口程序!需要详细注释! 怎么给大家份呀?to wyz_csdn等(500分诚征wav 转换到MP3的源程序(VC++的例子)) 在directshow中,不知道怎样对播放的画面的亮度进行控制? 如果深愛的人要離開你,是變心還是死亡好一點?(讨论) 贴了二次为什么没有人指教? 戒水快两年了,如今回来看看,物不是人非啦 东海和银赫的英文名是什么啊 1.把两面镜子面对面平行放置,中间放个小玩具,镜中会出现几个玩具影像?2.背对这家里的大镜子站立,然后拿一块小镜子对着自己的脸,能看到多少个自己面部的影像? 酶联免疫法检测瘦肉精时怎么会有假阳性,在屠宰场两次实验表明阳性,第二天回实验室做呈阴性,什么原因?有没有关于酶联免疫瘦肉精的技术交流群?或者对这方面比较了解的人士帮我介绍一 呼吸怎么老是闻到泥土的气味? 7、为了除去KCl固体中少量MgSO4和CaCl2杂质,须进行下列六项操作,正确的次序 是( ) ①加水溶解;②加热为什么是先加入过量BaCl2溶液,再加入过量K2CO3? 判断题,我做对了吗 为什么湿润的土壤气味更重一些请务必给我准确的回答~ 除去KCl中的CaCl2 加过量K2CO3对么我觉得不对啊 这样不就有杂质K2CO3了么 从考试的角度了判断 对还是错啊 判断题对了吗? 为什么现在感觉下雨时空气中会有一股带腥味的泥土气息,而以前没有这种气味呢? 谁知道(迈克)用英语怎么打吗?急 判断题,对了吗, 土壤烧后有刺鼻的气味,说明土壤终有什么? 用英语说迈克感觉怎么样 鱼鳍在游泳中的作用实验答案 两平面镜互成一定角度 若入射光与B平面镜平行,经过两个平面镜反射后,反射光线与平面镜A平行,则两平面镜 灯泡两个接线柱上的线头直接碰在一起 淘气把一些苹果放到底面半径是10厘米的圆柱形容器里清洗,这时水面上升了4厘米,这些苹果的体积是 《长相思》〈清〉 纳兰性德写的体裁是越快越好!谢谢各位! 电流表示数为0和电流表无示数有什么区别吗? 卤族元素的递变性是怎么来着? 这段函数看不懂啊void zh(int a[][3]){int i,j,t;for(i=0;i 长相思 〔清〕纳兰性德 释义 压缩机上哪个接线柱是共用线的接线柱? c++ 函数看不懂,怎么办指针数组,数组指针.指针函数,函数指针,二级指针很晕啊,理解不能,怎么办函数形参和实参是什么? 清朝纳兰性德写的《长相思》的意思 求安防售后服务管理制度 高中函数看不懂到底讲的是什么啊,虽然有些地方能看懂.但还有一多半看不懂的,即使记住了公式和内容什么的,也不理解,特别是三角函数那些,干什么用的? 24.(5分)某化学兴趣小组进行了识别化肥的探究活动.他们对氯化铵、碳酸氢铵、硫酸钾、磷矿粉四种化肥的实验探究步骤如下:(1)步骤一:取上述四种化肥各少量分别放入试管,观察,从外观 消毒供应室职业安全防护管理制度 谁知道急?消毒供应室职业安全防护管理制度谁知道 急呀 一个函数式看不懂这个函数式是啥意思?f(k)=∑n*n,(∑的下面写着n=1,上面写着k).以前学过,现在忘了.感激不禁. 鄂教版七年级上册文言文有哪些我要写罚题,语文书没带,请问有谁说下鄂教版七年级上册具体点的文言文. 搅拌器在有机化学实验室中是怎么使用的 1.半径为R的圆内接等腰梯形ABCD,它的下底AB是⊙O的半径,上底CD的端点在圆周上,写出这个梯形的周长y和腰长x的函数关系式,并写出它的定义域.2 .有甲乙两种商品,经营销售这两种商品所能获得 中国的科举制创立于哪个朝代 甘油与白油的区别 求一则文言文笑话,及其白话文的翻译 如图,第8题,给出分析过程,80分送上!(第(1)小题不知道做对没有,如有做错,烦请更正,) 润肤油与甘油的效用区别是什么 古文笑话 有翻译 越多越好 提问古文两小儿辩日孔子东游,见两小儿辩斗,问其故.一儿曰:“我以日始出时去近人,而日中时远也.”一儿以日初出远,而日中时近也.一儿曰:“日初出大如车盖,及日中,则如盘盂,此不为远者 几道判断题,亲们,帮帮忙!通过圆心和圆上任意一点的线段叫做半径 ( )男同学与女同学人数的比是3:4,女同学人数是男同学的一又三分之一倍( )分母是一百的分数叫做百分数.( )一个数( 翻译一个小笑话(文言文)短点儿的 研究历史应该从哪个朝代开始关于政治、文化、经济 高分求几道判断题?谢谢亲们呢…1.空间中任意三点可以确定一个方向 2.不等式9x的2次方-6x+1大于等于0的解集为多少 3.x是锐角,则180度+x是第几象限角 4.若simX=2m-1有意义,m范围是 5.直线ax+2y+2=0与 《环珠格格》动力火车《当》这首主题曲中“当山峰没有棱角的时候,当河水不再流”是通过化用什么古典诗词的文字和意境进行创作的? 赤橙黄绿青蓝紫各代表什么意思?详细的问题说明,有助于回答者给出准确的答案 判断题 会几个说几个 1、从伽利略变换可以推出洛伦兹收缩.是 否 2、布鲁诺认为宇宙是无限的,恒星都是遥远的太阳,这和哥白尼认为太阳是宇宙中心的观点是不同的.是 否 3、洛伦兹和庞卡莱 关于"海水"的古诗句 两面镜子面对面平行放置,在其中间放一玩具,镜面中会出现多少个玩具影像 亲们帮我看看1、我们要全面认识自己,把自己的长处和别人的不足相比,我们可以比出自信.把自己的不足和别人的长处相比,可以比出我们努力的方向.2、只要社会、学校、家庭、司法携手为孩 从西方经济学供求函数角度解释为什么OPEC要提高油价 把两面镜子面对面平行放置,中间放一个小玩具,会有多少个影子做做这个实验吧. 亲们,判断题 取一个冷的白瓦片放在蜡烛火焰上方片刻后取出,观察,有黑色小颗粒产生,冷却后触摸有滑腻感,此颗粒是?不好意思, 两个镜子面对面放,中间放一个玩具,镜中会有几个玩具影?要正确答案:把两个镜子面对面放置,中间放一个玩具,镜中会有多少个玩具影像?背对着家里的大镜子站立,然后拿一块小镜子对着自己 谁知道司马光的《唐太宗论止盗》的译文? 相互平行的两平面镜间有一支点着的蜡烛,则我们可以从中看到的像有几个,为什么,谢谢 把两面镜子面对面平行放置,在两面镜子中间放一个小玩具,镜子中会出现几个玩具的影像? 判断题做对了吗 迈克尔杰克逊私人医生刑满出狱 欲再获阿根廷政府开始局部放松外汇管制外媒:中国重视周边外交令日美警惕美被曝监听西班牙电话6000万宗引发越南民众聚集政府大楼前抗议挖沙公司破韩江原道前方哨所一士官遭枪击身亡 或翘臀又嘟嘴 壮汉翻拍“性感照”遭吐槽印媒:印度调整中国战略因不喜欢给中国日本进入“胖女时代”或因对瘦人审美疲人民日报海外版:监听门让世界彻底放弃移动设备进入美国儿童生活 使用人数两猫鼬欲擒毒蛇当美食 毒蛇凌厉反击赢得港媒:三中全会或开启中国“黄金时代”美国官员称奥巴马对监听各国政要事并不美学者:星巴克咖啡在中国必须贵 否则湖南纪委回应干部突击办酒:发现即查处最高法:健全和完善错案评价标准和问责霍英东遗产案于其忌日开庭 一方被批“汉字听写缺少科技内容:不能钻到茴香豆世界新闻报窃听丑闻开审 卡梅伦政府威叙利亚电子军自称攻破奥巴马推特账户莫让“私”字入公门连岛旅游度假区“十一”起免门票全国首个农机跨区作业服务标准诞生泰州凤城河老街蟹味早茶集市开张省农洽会境外参展历史最高台湾和平统一团体联合参访团造访江苏工地节前安全大检查《银河护卫队》DS展区百货综合力帆汽车展区东风悦达起亚新智跑来了华夏银行300贫困生免费读职校广东省总工会在线答工友咨询茶餐厅将成餐饮新宠一块海绵垫击中学校安全教育软肋上汽大通G10在时间的河,泛爱的小舟常平车展将在十一开幕祖国 母亲 恩深
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘