国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP與Oracle數(shù)據(jù)庫連接

2024-05-04 21:49:26
字體:
供稿:網(wǎng)友

通過PHP你可以輕松的連接到數(shù)據(jù)庫,請(qǐng)求數(shù)據(jù)并將其顯示在你的web站點(diǎn)中,甚至修改數(shù)據(jù)庫中的數(shù)據(jù),MySQL是一種很流行的數(shù)據(jù)庫,并且在互聯(lián)網(wǎng)中有許多有關(guān)PHP與MySQL的教程,MySQL是免費(fèi)的,這一點(diǎn)也許就吸引了不少人.

由于其廣泛應(yīng)用,我就不想在這里贅述MySQL的使用方法了,Oracle被大量在企業(yè)應(yīng)用中采用,因此我們就利用Oracle來介紹PHP與數(shù)據(jù)庫的連接,我們當(dāng)然不會(huì)提及Oracle數(shù)據(jù)庫的設(shè)計(jì)原理,原因是這已經(jīng)超出了我們的討論范圍.

PHP提供了兩套函數(shù)與Oracle連接,分別是ORA_和OCI函數(shù),其中ORA_函數(shù)略顯陳舊,OCI函數(shù)更新?lián)f更好一些,兩者的使用語法幾乎相差無幾,如前所述,你的PHP安裝選項(xiàng)應(yīng)該可以支持兩者的使用.

PHP與Oracle數(shù)據(jù)庫連接:

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

以上代碼使用TNSNAME,在你的tnsnames.ora文件中指明,定義的Oracle數(shù)據(jù)庫名稱、用戶名稱和密碼連接數(shù)據(jù)庫,在成功連接的基礎(chǔ)上,ora_logon函數(shù)返回一個(gè)非零的連接ID并儲(chǔ)存在變量$conn中.

PHP與oracle數(shù)據(jù)庫查詢.

假設(shè)與數(shù)據(jù)庫已經(jīng)連接就緒,下面我們就來實(shí)際的應(yīng)用對(duì)數(shù)據(jù)庫的查詢,下面的代碼演示了一個(gè)連接并查詢的典型例子:

  1. <?php 
  2. /* 
  3. * 連接數(shù)據(jù)庫并執(zhí)行查詢 
  4. */ 
  5. function printoraerr($in_cur) 
  6. // 檢查Oracle是否出錯(cuò) 
  7. // 假如存在錯(cuò)誤則顯示 
  8. // 當(dāng)指針被激活時(shí)每次請(qǐng)求Oracle后調(diào)用該函數(shù) 
  9. if(ora_errorcode($in_cur)) 
  10. echo "Oracle code - ".ora_error($in_cur)." "
  11. return
  12. /** 主程序 */ 
  13. if (!($conn=ora_logon("user@TNSNAME","password")))  
  14. echo "Connection to database failed "
  15. exit
  16. echo "Connected as connection - <b>$conn</b><br> "
  17. echo "Opening cursor ...<br> "
  18. $cursor=ora_open($conn); printoraerr($cursor); 
  19. echo "Opened cursor - <b>$cursor</b><br> "
  20. $qry="select user,sysdate from dual"
  21. echo "Parsing the query <b>$qry</b> ...<br> "
  22. ora_parse($cursor,$qry,0); printoraerr($cursor); 
  23. echo "Query parsed <br> "
  24. echo "Executing cursor ...<br> "
  25. ora_exec($cursor); printoraerr($cursor); 
  26. echo "Executed cursor<br> "
  27. echo "Fetching cursor ...<br> "
  28. while(ora_fetch($cursor)) 
  29. $user=ora_getcolumn($cursor,0); printoraerr($cursor); 
  30. $sysdate=ora_getcolumn($cursor,1); printoraerr($cursor); 
  31. echo " row = <B>$user, $sysdate </B><br> "
  32. }//開源代碼Vevb.com 
  33. echo "Fetched all records<br> "
  34. echo "Closing cursor ...<br> "
  35. ora_close($cursor); 
  36. echo "Closed cursor<br> "
  37. echo "Logging off from oracle... <br> "
  38. ora_logoff($conn); 
  39. echo "Logged off from oracle <br> "
  40. ?> 

譯者注:以上代碼段缺少注釋,請(qǐng)讀者參考PHP Manual的Oracle數(shù)據(jù)庫函數(shù)部分.

顯示結(jié)果,以下代碼演示了怎樣查詢數(shù)據(jù)庫并將結(jié)果輸出:

  1. <?php 
  2. function printoraerr($in_cur, $conn) 
  3. // 檢查Oracle是否出錯(cuò) 
  4. // 假如存在錯(cuò)誤則顯示 
  5. // 當(dāng)指針被激活時(shí)每次請(qǐng)求Oracle后調(diào)用該函數(shù) 
  6. // If it encountered an error, we exit immediately 
  7. if(ora_errorcode($in_cur))  
  8. echo "Oracle code - ".ora_error($in_cur)."<br>n"
  9. ora_logoff($conn); 
  10. exit
  11. return
  12.  
  13. function exequery($w_qry,$conn)  
  14. $cursor=ora_open($conn); printoraerr($cursor,$conn); 
  15. ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn); 
  16. ora_exec($cursor); printoraerr($cursor,$conn); 
  17. $numrows=0; 
  18. $w_numcols=ora_numcols($cursor); 
  19. // 顯示頭部 
  20. echo " 
  21. <TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="2"
  22. <TR> "; 
  23. for ($i=0;$i<$w_numcols;$i ) 
  24. $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"
  25. echo " <TH VALIGN=TOP ALIGN=$align>".ora_columnname($cursor,$i)."</TH> "
  26. echo "</TR> "
  27. while(ora_fetch($cursor)) 
  28. echo "<TR> "
  29. for ($i=0;$i<$w_numcols;$i )  
  30. $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"
  31. if(ora_columntype($cursor,$i)=="LONG"
  32. echo "<TD VALIGN=TOP ALIGN=$align><PRE>"
  33. ora_getcolumn($cursor,$i)."</PRE></TD> "
  34. else 
  35. echo "<TD VALIGN=TOP ALIGN=$align>".ora_getcolumn($cursor,$i)."</TD> "
  36. printoraerr($cursor,$conn); 
  37. $numrows ; 
  38. echo "</TR> "
  39. if ($numrows==0) 
  40. echo "<TR><TD COLSPAN="$w_numcols"><B>Query returned no records 
  41. </B></TD></TR> "; 
  42. else  
  43. echo "<TR> "
  44. echo "<TH COLSPAN="".($w_numcols-1)."" ALIGN=RIGHT>Count</TH> "
  45. echo "<TH ALIGN=RIGHT>$numrows</TH> "
  46. echo "</TR> "
  47. echo "</TABLE> "
  48. ora_close($cursor); 
  49. return
  50.  
  51. // 主程序 
  52. if(!($conn=ora_logon("user@SID","password")))  
  53. echo "Error: Cannot connect to database "
  54. exit
  55. $qry="SELECT 
  56. deptno "Dept" 
  57. ,empno "Emp" 
  58. ?>

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新竹县| 汕尾市| 临洮县| 鄂尔多斯市| 吕梁市| 北宁市| 巴彦县| 五家渠市| 遂溪县| 兴安县| 新晃| 五原县| 越西县| 永年县| 昌平区| 江永县| 广饶县| 松原市| 三河市| 井陉县| 涞源县| 济阳县| 建阳市| 阳曲县| 大余县| 视频| 武鸣县| 鸡西市| 南丹县| 江津市| 根河市| 奎屯市| 昌吉市| 南安市| 惠来县| 城步| 循化| 辉南县| 弋阳县| 南开区| 澳门|