好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP与Oracle数据库连接 - php高级应用

PHP与Oracle数据库连接

通过PHP你可以轻松的连接到数据库,请求数据并将其显示在你的web站点中,甚至修改数据库中的数据,MySQL是一种很流行的数据库,并且在互联网中有许多有关PHP与MySQL的教程,MySQL是免费的,这一点也许就吸引了不少人.

由于其广泛应用,我就不想在这里赘述MySQL的使用方法了,Oracle被大量在企业应用中采用,因此我们就利用Oracle来介绍PHP与数据库的连接,我们当然不会提及Oracle数据库的设计原理,原因是这已经超出了我们的讨论范围.

PHP提供了两套函数与Oracle连接,分别是ORA_和OCI函数,其中ORA_函数略显陈旧,OCI函数更新据说更好一些,两者的使用语法几乎相差无几,如前所述,你的PHP安装选项应该可以支持两者的使用.

PHP与Oracle数据库连接:

<?php  if  ($conn=Ora_Logon( "user@TNSNAME" , "password" ))   {  echo   "<B>SUCCESS ! Connected to database<B> " ;  }   else    {  echo   "<B>Failed :-( Could not connect to database<B> " ;  }  Ora_Logoff($conn);  phpinfo();  ?> 

以上代码使用TNSNAME,在你的tnsnames.ora文件中指明,定义的Oracle数据库名称、用户名称和密码连接数据库,在成功连接的基础上,ora_logon函数返回一个非零的连接ID并储存在变量$conn中.

PHP与oracle数据库查询.

假设与数据库已经连接就绪,下面我们就来实际的应用对数据库的查询,下面的代码演示了一个连接并查询的典型例子:

<?php  /*   * 连接数据库并执行查询   */   function  printoraerr($in_cur)  {  // 检查Oracle是否出错   // 假如存在错误则显示   // 当指针被激活时每次请求Oracle后调用该函数   if (ora_errorcode($in_cur))  echo   "Oracle code - " .ora_error($in_cur). " " ;  return ;  }  /** 主程序 */   if  (!($conn=ora_logon( "user@TNSNAME" , "password" )))   {  echo   "Connection to database failed " ;  exit ;  }  echo   "Connected as connection - <b>$conn</b><br> " ;  echo   "Opening cursor ...<br> " ;  $cursor=ora_open($conn); printoraerr($cursor);  echo   "Opened cursor - <b>$cursor</b><br> " ;  $qry= "select user,sysdate from dual" ;  echo   "Parsing the query <b>$qry</b> ...<br> " ;  ora_parse($cursor,$qry,0); printoraerr($cursor);  echo   "Query parsed <br> " ;  echo   "Executing cursor ...<br> " ;  ora_exec($cursor); printoraerr($cursor);  echo   "Executed cursor<br> " ;  echo   "Fetching cursor ...<br> " ;  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> " ;  } //开源代码phpfensi测试数据   echo   "Fetched all records<br> " ;  echo   "Closing cursor ...<br> " ;  ora_close($cursor);  echo   "Closed cursor<br> " ;  echo   "Logging off from oracle... <br> " ;  ora_logoff($conn);  echo   "Logged off from oracle <br> " ;  ?> 

译者注:以上代码段缺少注释,请读者参考PHP Manual的Oracle数据库函数部分.

显示结果, 以下代码演示了怎样查询数据库并将结果输出:

<?php  function  printoraerr($in_cur, $conn)  {  // 检查Oracle是否出错   // 假如存在错误则显示   // 当指针被激活时每次请求Oracle后调用该函数   // If it encountered an error, we exit immediately   if (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> ";  for  ($i=0;$i<$w_numcols;$i )  {  $align=(ora_columntype($cursor,$i)== "NUMBER" )? "RIGHT" : "LEFT" ;  echo   " <TH VALIGN=TOP ALIGN=$align>" .ora_columnname($cursor,$i). "</TH> " ;  }  echo   "</TR> " ;  while (ora_fetch($cursor))  {  echo   "<TR> " ;  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> " ;  else   echo   "<TD VALIGN=TOP ALIGN=$align>" .ora_getcolumn($cursor,$i). "</TD> " ;  printoraerr($cursor,$conn);  }  $numrows ;  echo   "</TR> " ;  }  if  ($numrows==0)  echo   "<TR><TD COLSPAN=" $w_numcols"><B>Query returned no records  </B></TD></TR> ";  else    {  echo   "<TR> " ;  echo   "<TH COLSPAN=" ".($w_numcols-1)." " ALIGN=RIGHT>Count</TH> " ;  echo   "<TH ALIGN=RIGHT>$numrows</TH> " ;  echo   "</TR> " ;  }  echo   "</TABLE> " ;  ora_close($cursor);  return ;  }    // 主程序   if (!($conn=ora_logon( "user@SID" , "password" )))   {  echo   "Error: Cannot connect to database " ;  exit ;  }  $qry="SELECT  deptno  "Dept"   ,empno  "Emp"   ?>

查看更多关于PHP与Oracle数据库连接 - php高级应用的详细内容...

  阅读:39次