內容:
一、 什麼是DB類
二、 為什麼要設計抽象的中間數據層
三、 DB的使用入門
四、 DB_Common 使用參考
五、 更進一步,創建你自己的中間數據庫應用層
六、 DB的不足
七、參考資源
關於作者
相關內容:
1、用PEAR來寫你的下一個PHP程序
2、常用模塊
3、使用PHPDoc輕松建立你的PEAR文檔
潘凡 (
[email protected])
北京賽迪網信息技術有限公司
2001 年 8 月
對於PHP的應用程序來說,90%以上需要和數據庫來打交道。那麼,你是如何操縱數據庫的?當你的後端數據庫升級或變遷後,你的這些程序是否能夠隨之平滑地升級和掛接呢?如果你正在考慮這個問題,那麼不妨和我來討論一下,如何使用PEAR中的DB類來創建與數據庫無關的數據庫應用層。
一、 什麼是DB類
我們首先簡單地了解一下DB類。DB類是PEAR中進行數據操作的幾個類的集合,它的主要目的是提供一個統一的,抽象的數據接口,這個接口與後端的數據庫是無關的。因此,如果你的應用程序使用這個通用的接口來進行數據庫的操作,那麼就能夠平滑地切換到不同的數據庫下面,如MySQL,SQL,Sybase等等。實際上,DB類希望能夠起到簡單的類似ODBC或者是PERL中的DBI的作用。說到這裡,不得不提一下PHP中的另一個優秀的庫:ADODB。ADODB也和DB一樣,提供了一個抽象的中間層,而且ADODB所支持的後端數據庫要比DB多(至少目前如此),不過ADODB沒有直接使用PEAR的一些特性,只是吸取了PEAR的許多思想,包括DB,因此二者的使用方法有許多相似的地方。我不想評論二者孰優孰劣,大家可以根據個人的喜好來使用。
二、 為什麼要設計抽象的中間數據層
在詳細討論DB的使用之前,我們先討論一下為什麼要設計中間的數據層,因為這意味著你需要作出一些犧牲和讓步,比如,你需要多寫一些代碼,有的局限於特定數據庫的特性將無法直接使用。
我們回憶一下我們過去的做法,如何連接到MySQL數據庫?這的確是個小兒科的問題,下面的代碼你一定很熟悉:
/**
* 連接到MySQL數據庫
*/
$host = "localhost";
$user = "root";
$passwd = "";
$persistent = 1;
if ($persisternt){
$conn = MySQL_connect($host,$user,$passwd);
}else {
$conn = MySQL_pconnect($host,$user,$passwd);
}
?>
好了,現在建立了數據庫連接,我們可以使用它來進行數據庫的操作,我們可能使用類似的代碼:
function sql_exec($sql) {
global $db_Name;
$result = MySQL_db_query($db_dbName,$sql);
if (!$result) {
echo mysql_errno(). ": ".MySQL_error(). "
$sql
";
exit();
}
return $result;
}
$db_Name = "test";
$sql = "select * from users";
$result = sql_exec($sql);
while(