PHP使用Oracle数据库.docx
《PHP使用Oracle数据库.docx》由会员分享,可在线阅读,更多相关《PHP使用Oracle数据库.docx(11页珍藏版)》请在冰豆网上搜索。
PHP使用Oracle数据库
PHP使用Oracle数据库
本站整理 网络搜集 2008-05-07 点击:
639 我要评论
oracle|数据|数据库
-
【摘要】HP提供了2大类API(应用程序接口)来操作Oracle数据库。
一个是标准的Oracle处理函数(ORA)另一个是Oracle8调用接口函数(OCI8).后者只能在Oracle7或8版本上使用。
由于OCI8提供了很多优化选项,因此只要有可能就应该采用OCI8接口。
在php3.0以上版本中,php内置了几乎目前所有的数据库处理函数,包括Oracle;在本文中我们通过一个实例来介绍了如何使用这些函数来操作Oracle数据库。
PHP提供了2大类API(应用程序接口)来操作Oracle数据库。
一个是标准的Oracle处理函数(ORA)另一个是Oracle8调用接口函数(OCI8).后者只能在Oracle7或8版本上使用。
由于OCI8提供了很多优化选项,因此只要有可能就应该采用OCI8接口。
这里我们分别用这二种函数集进行了演示。
首先本文的前提假设你已经装好了Oracle数据库环境和PHP开发环境. 如果不懂也没多大关系,网上有很多相关的好文章可以参考。
第一步:
创建一个实验用的数据库
这个问题你可以请你的数据库管理员或参考Oracle用户手册处理,这里不再多讲
用ORA建立数据表
即使你已经创建好了数据表,也请看看本段文字。
它可以告诉你如何用PHP+SQL的技术操作Oracle
在本例中我们创建了一个用于存放个人email的数据表
相关PHP代码:
PutEnv("ORACLE_SID=ORASID");
$connection=Ora_Logon("username","password");
if($connection==false){
echoOra_ErrorCode($connection).":
".Ora_Error($connection)."";
exit;
}
$cursor=Ora_Open($connection);
if($cursor==false){
echoOra_ErrorCode($connection).":
".Ora_Error($connection)."";
exit;
}
$query="createtableemail_info".
"(fullnamevarchar(255),email_addressvarchar(255))";
$result=Ora_Parse($cursor,$query);
if($result==false){
echoOra_ErrorCode($cursor).":
".Ora_Error($cursor)."";
exit;
}
$result=Ora_Exec($cursor);
if($result==false){
echoOra_ErrorCode($cursor).":
".Ora_Error($cursor)."";
exit;
}
Ora_Commit($connection);
Ora_Close($cursor);
Ora_Logoff($connection);
?
>
为了处理Oracle数据库,我们首先要和Oracle建立一个联结。
语法是Ora_Logon(user,password),返回一个connectID..
提醒:
在此之前我们还必须设置环境变量:
ORACLE_SID的值.
现在,我们可以通过该联结的ID对Oracle进行交互式操作了。
数据表名字就叫email_info吧。
该表由2个域组成,一个存储个人全名,(如:
晓月)一个存储email地址如(xiaoyue@)
还需要一个游标Ora_Open. 该游标常常用来枚举数据。
我们用Ora_Parse或Ora_Exec查询Oracle的结果集. Ora_Parse效验SQL语法正确性而Ora_Exec则执行相应的SQL语句. 如果这一切都正常运行,那么我们就运行Ora_Commit来确认.
CreateATableUsingOCI
下面我们将建立一个email个人信息簿。
这次采用OCI8API指令
相关PHP代码:
php
PutEnv("ORACLE_SID=ORASID");
$connection=OCILogon("username","password");
if($connection==false){
echoOCIError($connection)."
";
exit;
}
$query="createtableemail_info".
"(fullnamevarchar(255),email_addressvarchar(255))";
$cursor=OCIParse($connection,$query);
if($cursor==false){
echoOCIError($cursor)."
";
exit;
}
$result=OCIExecute($cursor);
if($result==false){
echoOCIError($cursor)."
";
exit;
}
OCICommit($connection);
OCILogoff($connection);
?
>
我们可以看到这2段代码语法几乎都一样,区别仅仅函数名字不同;其次,在OCI8中我们不需要专门运行打开游标的指令,在调用OCIParse系统就自动返回了一个游标ID.
利用ORA向数据表'email_info'输入数据
当用户浏览这段脚本时,显示一个由姓名、email输入域组成的表单;当用户添好数据点击提交时,脚本程序将把这姓名、email保存到'email_info'数据表中。
相关PHP代码:
php
if($submit=="click"){
//Thesubmitbuttonwasclicked!
//Gettheinputforfullnameandemailthenstoreitinthedatabase.
PutEnv("ORACLE_SID=ORASID");
$connection=Ora_Logon("username","password");
if($connection==false){
echoOra_ErrorCode($connection).":
".Ora_Error($connection)."
";
exit;
}
$cursor=Ora_Open($connection);
if($cursor==false){
echoOra_ErrorCode($connection).":
".Ora_Error($connection)."
";
exit;
}
$query="insertintoemail_infovalues('$fullname','$email')";
$result=Ora_Parse($cursor,$query);
if($result==false){
echoOra_ErrorCode($cursor).":
".Ora_Error($cursor)."
";
exit;
}
$result=Ora_Exec($cursor);
if($result==false){
echoOra_ErrorCode($cursor).":
".Ora_Error($cursor)."
";
exit;
}
Ora_Commit($connection);
Ora_Close($cursor);
Ora_Logoff($connection);
}
else{
echo'
<FORMaction=insert.phpmethod=post>
请输入姓名
<INPUTname=fullname></INPUT>
请输入Email地址
<INPUTname=email></INPUT>
<INPUTname=submittype=submitvalue=click></INPUT>
</FORM>
';
}
?
>
对了,这段脚本必须存为insert.php,因为在调用的页面中指定insert.php为表单处理程序
浏览效果:
窗体顶端
请输入姓名
请输入Email地址
窗体底端
利用OCI向数据表'email_info'输入数据
同上,只不过用OCI来写
相关PHP代码:
php
if($submit=="click"){
//Thesubmitbuttonwasclicked!
//Gettheinputforfullnameandemailthenstoreitinthedatabase.
PutEnv("ORACLE_SID=ORASID");
$connection=OCILogon("username","password");
if($connection==false){
echoOCIError($connection)."
";
exit;
}
$query="insertintoemail_infovalues('$fullname','$email')";
$cursor=OCIParse($connection,$query);
if($cursor==false){
echoOCIError($cursor)."
";
exit;
}
$result=OCIExecute($cursor);
if($result==false){
echoOCIError($cursor)."
";
exit;
}
OCICommit($connection);
OCILogoff($connection);
}
else{
echo'
<FORMaction=insert.phpmethod=post>
请输入姓名
<INPUTname=fullname></INPUT>
请输入Email地址
<INPUTname=email></INPUT>
<INPUTname=submittype=submitvalue=click></INPUT>
</FORM>
';
}
?
>
对了,这段脚本必须存为insert.php,因为在调用的页面中指定insert.php为表单处理程序
浏览效果:
窗体顶端
请输入姓名
请输入Email地址
窗体底端
利用ORA列出全部数据表'email_info'中的数据
下面,我们将逐条读出数据库的内容,并以html表格形式显示'email_info'数据表中的数据
相关PHP代码:
php
PutEnv("ORACLE_SID=ORASID");
$connection=Ora_Logon("username","password");
if($connection==false){
echoOra_ErrorCode($connection).":
".Ora_Error($connection)."
";
exit;
}
$cursor=Ora_Open($connection);
if($cursor==false){
echoOra_ErrorCode($connection).":
".Ora_Error($connection)."
";
exit;
}
$query="select*fromemail_info";
$result=Ora_Parse($cursor,$query);
if($result==false){
echoOra_ErrorCode($cursor).":
".Ora_Error($cursor)."
";
exit;
}
$result=Ora_Exec($cursor);
if($result==false){
echoOra_ErrorCode($cursor).":
".Ora_Error($cursor)."
";
exit;
}
echo"
";
echo"FullName
EmailAddress";
while(Ora_Fetch_Into($cursor,&$values)){
$name=$values[0];
$email=$values[1];
echo"
$name
$email";
}
echo"
";
Ora_Close($cursor);
Ora_Logoff($connection);
?
>
程序运行的浏览效果如下所示:
姓名
Email地址
春花
springflower@
秋月
autumnmoon@
...
...
利用OCI列出全部数据表'email_info'中的数据
同上,只不过用OCI来写
相关PHP代码:
php
PutEnv("ORACLE_SID=ORASID");
$connection=OCILogon("username","password");
if($connection==false){
echoOCIError($connection)."
";
exit;
}
$query="select*fromemail_info";
$cursor=OCIParse($connection,$query);
if($cursor==false){
echoOCIError($cursor)."
";
exit;
}
$result=OCIExecute($cursor);
if($result==false){
echoOCIError($cursor)."
";
exit;
}
echo"
";
echo"FullName
EmailAddress";
while(OCIFetchInto($cursor,$values)){
$name=$values[0];
$email=$values[1];
echo"
$name
$email";
}
echo"
";
OCILogoff($connection);
?
>
程序运行的浏览效果如下所示:
姓名
Email地址
春花
springflower@
秋月
autumnmoon@
...
...