程序员人生 网站导航

php数据库连接

栏目:php教程时间:2013-12-14 19:34:47

通过PHP你可以轻松的连接到数据库,请求数据并将其显示在你的web站点中,甚至修改数据库中的数据。MySQL是一种很流行的数据库,并且在互联网中有许多有关PHP与MySQL的教程。MySQL是免费的,这一点也许就吸引了不少人。由于其广泛应用,我就不想在这里赘述MySQL的使用方法了。Oracle被大量在企业应用中采用,因此我们就利用Oracle来介绍PHP与数据库的连接。我们当然不会提及Oracle数据库的设计原理,原因是这已经超出了我们的讨论范围。

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

4.1 连接

  1.  
  2. if ($conn=Ora_Logon("user@TNSNAME","password"))  
  3. {  
  4. echo "SUCCESS ! Connected to database ";  
  5. }  
  6. else 
  7. {  
  8. echo "Failed :-( Could not connect to database ";  
  9. }  
  10. Ora_Logoff($conn);  
  11. phpinfo();  
  12. ?> 

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

4.2 查询

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

  1.  
  2. /*
  3. * 连接数据库并执行查询  
  4. */ 
  5. function printoraerr($in_cur)  
  6. {  
  7. // 检查Oracle是否出错  
  8. // 如果存在错误则显示  
  9. // 当指针被激活时每次请求Oracle后调用该函数  
  10. if(ora_errorcode($in_cur))  
  11. echo "Oracle code - ".ora_error($in_cur)." ";  
  12. return;  
  13. }  
  14. /** 主程序 */ 
  15. if (!($conn=ora_logon("user@TNSNAME","password")))  
  16. {  
  17. echo "Connection to database failed ";  
  18. exit;  
  19. }  
  20. echo "Connected as connection - $conn 
  21. ";  
  22. echo "Opening cursor ...  
  23. ";  
  24. $cursor=ora_open($conn); printoraerr($cursor);  
  25. echo "Opened cursor - $cursor 
  26. ";  
  27. $qry="select user,sysdate from dual";  
  28. echo "Parsing the query $qry ...  
  29. ";  
  30. ora_parse($cursor,$qry,0); printoraerr($cursor);  
  31. echo "Query parsed  
  32. ";  
  33. echo "Executing cursor ...  
  34. ";  
  35. ora_exec($cursor); printoraerr($cursor);  
  36. echo "Executed cursor  
  37. ";  
  38. echo "Fetching cursor ...  
  39. ";  
  40. while(ora_fetch($cursor))  
  41. {  
  42. $user=ora_getcolumn($cursor,0); printoraerr($cursor);  
  43. $sysdate=ora_getcolumn($cursor,1); printoraerr($cursor);  
  44. echo " row = $user$sysdate 
  45. ";  
  46. }  
  47. echo "Fetched all records  
  48. ";  
  49. echo "Closing cursor ...  
  50. ";  
  51. ora_close($cursor);  
  52. echo "Closed cursor  
  53. ";  
  54. echo "Logging off from oracle...  
  55. ";  
  56. ora_logoff($conn);  
  57. echo "Logged off from oracle  
  58. ";  
  59. ?> 

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

4.3 显示结果

以下代码演示了怎样查询数据库并将结果输出:以下是引用片段:

  1. function printoraerr($in_cur$conn)  
  2. {  
  3. // 检查Oracle是否出错  
  4. // 如果存在错误则显示  
  5. // 当指针被激活时每次请求Oracle后调用该函数  
  6. // If it encountered an error, we exit immediately  
  7. if(ora_errorcode($in_cur))  
  8. {  
  9. echo "Oracle code - ".ora_error($in_cur)."  
  10. n";  
  11. ora_logoff($conn);  
  12. exit;  
  13. }  
  14. return;  
  15. }  
  16. function exequery($w_qry,$conn)  
  17. {  
  18. $cursor=ora_open($conn); printoraerr($cursor,$conn);  
  19. ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn);  
  20. ora_exec($cursor); printoraerr($cursor,$conn);  
  21. $numrows=0;  
  22. $w_numcols=ora_numcols($cursor);  
  23. // 显示头部  
  24. echo "  
  25. ";  
  26. for ($i=0;$i<$w_numcols;$i++)  
  27. {  
  28. $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";  
  29. echo " ".ora_columnname($cursor,$i)." ";  
  30. }  
  31. echo "  
  32. ";  
  33. while(ora_fetch($cursor))  
  34. {  
  35. echo " ";  
  36. for ($i=0;$i<$w_numcols;$i++)  
  37. {  
  38. $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT";  
  39. if(ora_columntype($cursor,$i)=="LONG")  
  40. echo " ".  
  41. ora_getcolumn($cursor,$i)."  
  42. ";  
  43. else 
  44. echo " ".ora_getcolumn($cursor,$i)." ";  
  45. printoraerr($cursor,$conn);  
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐