[ PHP HOWTO ]
PHP如何透過ODBC來存取資料庫
PHP/Zend Research Center
By Chiang Deng-Wei (ernest)Version 1.0 May 19,2000 初稿
源起
自1999年底, 我加入了PHP/Zend RC團隊, 並擔任了php版的版主, 常常見到有phper(這字是我剛剛發明的, 呵呵, 泛指所有玩php的人.)問到能不能用PHP存取Access, 或是ODBC該如何用之類的問題, 於是我計劃整理一份這方面的文件, 在經過一番整理與測試後, 這份文件就是您現在所看到的. 源起的字不用太多, 重點是希望能給每一位phper在ODBC方面一個指引, 就醬子. ^_^
宣告
這份文件的所有權是屬於Chiang Deng-Wei的. 本文件允許您修改或翻譯, 並以任何形式傳播, 包括商業化版本, 但希望您能知會我一聲, 且務必完整呈現原有的宣告與版權, 以及本人的完整名字.
若您使用這份文件, 而在您的任何電腦上有任何的損害, 或是有任何形式的損失, 作者我不負任何責任喔! 簡單一句話, 所有事都由您自行負責.
摘要
本文件主要是在Win32的環境下作說明, 您需要的是台跑Windows 9x/NT/2000的電腦, 並裝有任何一種web server和PHP3或PHP4, 且可正確執行PHP Script. 並有一種以上的SQL資料庫軟體, 例如:Access...
本文件以MS-Access資料庫來作說明, 其它種的資料庫端, 皆可以類似的方法來作ODBC連結.
- 進入MS-Access, 建立一個odbctest.mdb的檔案.
- 開始建立一個資料表(table).
此資料表我們給它兩個欄位: id 和 name.
- 將此資料表命名為 Class .
- 接著我們輸入一些資料.例如:
- 開啟 控制台 裡的 "ODBC 資料來源" .
![]()
- 選擇 "系統資料來源名稱" 頁.
- 點選 "新增..." 按鈕.
- 選擇你想使用的 ODBC 驅動程式. 在此請選擇 "Microsoft Access Driver", 當然若您使用其他種的資料庫端, 就選擇該資料庫的ODBC Driver.
- 點選 "完成" 按鈕.
- 接著會出現這個視窗, 來作進一步的設定.
- 輸入資料來源名稱為 "WebDB" . 描述的部分可以隨便輸入, 自己了解就可以了.
- 按 "選取..." 鈕, 輸入您欲連結的資料庫檔案位置. 例如: 這裡的 c:\odbctest.mdb
- 接著再點選 "進階..." 鈕. 會出現這個畫面:
您需要輸入的部分是 : 登入名稱和密碼, 在此我們先分別設成 'webuser' 和 'webpassword'.
- OK了. ODBC的設定部分已經完成了.
以下是個測試用的PHP Script內容, 請將它save起來, 例如存到您web server的文件根目錄.
<?
//____________________________________________________________ // // 單位 PHP/Zend RC (http://mark.ee.nctu.edu.tw:8888) // 檔名 odbctest.php // 用途 一個簡單的PHP程式,來測試透過ODBC如何存取資料庫 // 作者 ernest (Chiang Deng-Wei) 於 May 14, 2000 // 信箱 ernestch@ms2.url.com.tw //____________________________________________________________ function Error_Handler( $msg, $cnx ) { echo "$msg \n"; // 為避免佔用連結, 在程式結束前close掉是很重要的. odbc_close( $cnx); exit(); } // 建立一個 ODBC 連結, 傳回至 $cnx $cnx = odbc_connect( 'WebDB' , 'webuser', 'webpassword' ); // 在測試時若有權限上問題, 也許你可以使用 superadmin 來存取 : // $cnx = odbc_connect( 'WebDB' , [sa login] , [sa password] ); if( ! $cnx ) { Error_handler( "在 odbc_connect 有錯誤發生" , $cnx ); } // 送出一個簡單的 odbc query . 傳回一個 odbc 指標 $cur= odbc_exec( $cnx, "select id,name from Class" ); if( ! $cur ) { Error_handler( "在 odbc_exec 有錯誤發生( 沒有指標傳回 ) " , $cnx ); } echo " "; odbc_close( $cnx); ?>
\n"; $num_row=0; // 取出成功傳回的資料 while( odbc_fetch_row( $cur ) ) { $num_row++; // 抓取 "id" 欄位的資料 $id= odbc_result( $cur, 1 ); // 抓取 "name"欄位的資料 $name= odbc_result( $cur, 2 ); echo " 座號 姓名 \n"; } echo " $id $name 共 $num_row 人 從您的網頁瀏覽器, 開啟瀏覽這個測試用的PHP Script.
如果一切正確無誤的話, 您應該可以看到以下的資料:
座號 姓名 1 Ernest 2 Norman 3 PHP/Zend RC 4 ODBCCooler 5 我是五號 6 六號就是我 共 6 人 本文件的作者為ernest (Chiang Deng-Wei), 我的email是 ernestch@ms2.url.com.tw , 若您對本文件有任何使用上的問題或建議, 歡迎您到PHP/Zend RC的php版來參與討論, 先在此竭誠的歡迎您. 衷心的希望本文件真能對phper有所幫助.
- 謝謝我的父親讓我自小就有個可以學習電腦的環境.
- 感謝PHP/Zend RC團隊, 特別是ttj, 我剛加入團隊時還是個php菜鳥, 而ttj不因我是個菜鳥就'拋棄'我, 且讓我負責php版的事務, 讓我有很好的學習機會. 也謝謝其它團員們大家的鼓勵.
- 謝謝Jenny對我的支持, 也謝謝BobChao多次神奇相救 ^_^
- 最後謝謝那些原諒我忘了謝謝的人.