pear mdb2 使用教學 資料庫連結
pear mdb2是整合原有db函式後的新類別庫(pear db已不再維護更新),而兩者的差別據官網所述,mdb2提供一些選擇性的特色,讓它建構出的SQL敘述對各資料庫系統有較好的可攜性portable。
如果和我一樣是自己手動安裝的話,除了要裝mdb2的libiary外,記得還要裝資料庫的driver:
1. 下載MDB2
2. 下載MDB2_Driver_mysql
3. 兩者解壓後,整合到一個資料夾
(可下載我整合好的mdb2,省略上述;如果需要mssql、oracle、postgrel,可至官網搜尋並下載driver)
4. 上傳至pear的資料夾(路徑自行決定,不贅述)
來個簡單的資料庫連接範例吧:
require_once('MDB2.php'); setDBOpen(); //要進行資料庫操作的程式...後續介紹 //dbconn->query("..."); //dbconn->queryOne("..."); //dbconn->queryRow("..."); //dbconn->queryAll("..."); //dbconn->exec("..."); setDBClose(); //自行撰寫的資料庫連接函式 function setDBOpen() { $GLOBALS['dbconn'] = &MDB2::connect(array('phptype'=>'mysql','hostspec'=>'localhost','database'=>'hello','username'=>'hello','password'=>'hello','charset'=>'utf8')); if(!PEAR::isError($GLOBALS['dbconn'])) { $GLOBALS['dbconn']->setFetchMode(MDB2_FETCHMODE_ASSOC); $GLOBALS['dbconn']->setOption('portability',MDB2_PORTABILITY_NONE); } else { die('error!'); //如果要顯示詳細的錯誤訊息,就改用下述 //die($GLOBALS['dbconn']->getMessage().','.$GLOBALS['dbconn']->getDebugInfo()); } } //自行撰寫的資料庫斷線函式 function setDBClose() { if (is_object($GLOBALS['dbconn'])) $GLOBALS['dbconn']->disconnect(); }
重點說明:
資料庫連線有三種模式:
&MDB2::factory 建立MDB2物件,但等到要進行資料庫操作時才連線
&MDB2::singleton 同factory,但它保證只有一個MDB2物件連線到資料庫
用哪個模式看需求,如果和我一樣每次資料庫連線就要進行操作的話,用connect就可以了
setFetchMode有三種屬性(query出來值的呈現方式):
MDB2_FETCHMODE_ASSOC(例:$result[‘name’])
MDB2_FETCHMODE_OBJECT(例:$result->name)
option有幾個項目,當中特別要說明的是portability,如果沒有加上MDB2_PORTABILITY_NONE,query出來的結果一律以小寫表示,比方說:
$test = dbconn->queryRow("select ABC,DEF from hello where ID = 1"); echo $test['abc']; //正確 echo $test['ABC']; //錯誤
官網說為了各資料庫的相容性,所以預設是以小寫表示,如果真的不需要,就用MDB2_PORTABILITY_NONE把它關掉
您好,很感謝您分享的資訊,有個問題想請教。
我在測試機上開發網頁,用的資料庫是mysql,且能正常執行,
但是由於正式上線的伺服器資料庫是MS SQL,是否只要將網路上所下載的MDB2_MSSQL_Driver 裡面不同資料夾內共六個mssql.php檔案複製到對應的資料夾就好了?
我目前是只將檔案複製過去,但一直出現MDB2 Error: connect failed i及 connect: [Error message: unable to establish a connection] 的錯誤訊息,不好意思,請問這會是狀況導致呢?謝謝你!