傳統資料庫抽象層(如 PEAR DB、Metabase)多僅提供統一 API,難以完全消除特定資料庫相關代碼,且效能損耗較大。MDB 融合兩者優點,並在 API 整理與效能優化上大幅改進,支援資料型別抽象、XML Schema 管理、預備查詢模擬、LOB 大物件儲存等進階功能,同時保持高效能與易用性。
不同資料庫對日期、字串的儲存格式不同。MDB 提供 getTextValue()、getTimestampValue() 等方法自動轉換:
$timeout = MDB_date::unix2Mdbstamp(time() + 1800); // 30 分鐘後
$query = "SELECT createtime, user_id FROM sessions
WHERE session = " . $mdb->getTextValue($session) . "
AND lastaccess < " . $mdb->getTimestampValue($timeout);
$types = array('timestamp', 'integer');
$result = $mdb->queryRow($query, $types); // 自動將第一欄轉為 ISO 8601 格式
二進位檔案存 BLOB,文字檔存 CLOB。需搭配預備查詢使用:
$blob = $mdb->createLob(array('Type' => 'inputfile', 'FileName' => './myfile.gif'));
$clob = $mdb->createLob(array('Type' => 'data', 'Data' => $longString));
$p_query = $mdb->prepareQuery("INSERT INTO docs (blob_col, clob_col) VALUES (?, ?)");
$mdb->execute($p_query, null, array($blob, $clob), array('blob', 'clob'));
lynx -source go-pear.org | php # 安裝 PEAR
pear install MDB # 安裝 MDB
Windows 環境請參考 PEAR 官方文件。