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] 的錯誤訊息,不好意思,請問這會是狀況導致呢?謝謝你!