PHP 為老手開發人員提供了創建一些強大的 Web 解決方案的工具。而且,它還可以通過擴展添加額外的功能,從而使得創建解決方案更加容易。 PHP Extension and Application Repository (PEAR) 是一個幫助開發人員通過 API 或包(package)創建解決方案的框架。PEAR 還是一個分布式系統,該系統提供了自動安裝這些包的一個方法。在這篇文章中,我將著重強調我認為其中最重要的一個包:DB 包。 DB 包是一個面向對象風格的抽象層,是對 PHP 的底層數據庫連接和查詢的抽象;與 PHP 4 和 PHP 5 兼容。DB 包目前支持以下擴展:dbase、fbsql、interbase、informix、msql、MSSQL、mysql、mysqli、oci8、odbc、pgsql、sqlite和 Sybase。 如果用過mysql_* 函數添加和查詢MySQL數據庫,那麼你可以熟悉它所提供的不同的結果集(resultsets)。最常用的兩個結果集要麼是一個數組,在這個數組中每個域(field)是一個被索引的元素,要麼是一個組合數組,其中每個字段是一個鍵/值(key/value)對。PEAR DB 提供這兩個結果集,以及一個對象類型,這個對象類型創建一個動態對象,其中每個域作為對象的一個屬性。在 Windows 平台下使用 ADO 連接的開發人員可能會很熟悉組合數組和對象類型。 在 ADO 中,結果集(或者記錄集(Recordset))是作為一個可導航的行集合返回的。每一行是 Field 對象的一個集合。每個 Field 對象都有一個 Name 和一個 Value 屬性(也就是字段的名稱和那個所包含的數據)。下面在 PHP 中訪問字段數據的一個例子: require_once("DB.php"); $dsn = "mysql://username:passWord@localhost/database"; $options = array( 'debug' => 2, 'portability' => DB_PORTABILITY_ALL, ); $db =& DB::connect($dsn, $options); $db->setFetchMode(DB_FETCHMODE_ASSOC); $res =& $db->query("SOME SQL STRING"); $row =& $res->fetchRow(); echo $row['field1']; 下面是如何在 VBScript 中使用 ADO 來實現: Dim conn, rs Set conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset") conn.ConnectionString = "some connection string" Set rs.ActiveConnection = conn rs.Open "SOME SQL STRING" Response.Writers.Fields("field1").Value 你可以看到這兩種方法具有相似之處。首先,要建立一個到數據庫的連接。然後,發出一個查詢並接收一個結果集。像 ADO 一樣,PEAR DB 包提供對所有與數據庫服務通信相關的低層結果的抽象。 如果你是 PEAR 新手,那麼你可能需要了解如何在你自己的系統上實現包。作為一個抽象系統,PEAR 可以使你很容易地實現包。我對承載 Web 站點的機器沒有太多的控制權,只能限於通過 FTP 和一個由主機供應商所提供的“控制面板”來管理我自己的虛擬主機。 在安裝 PEAR 之前,先將這段腳本復制到主機系統上的一個 PHP 文件中。我在主機默認 Web 目錄中創建了一個叫做 install 的目錄,並將這個腳本復制到了一個叫做 go-pear.php的文件中。然後將目錄權限改成了允許訪問安裝腳本。之後我從浏覽器中進入了go-pear.php installer 頁面,由腳本完成剩下的事情。在這些都做完之後,我通過一個鏈接進入了 Web package installer,更改了配置選項(通過 configuration 鏈接進入),然後開始安裝這些包,安裝過程沒有出現問題。 注:我是在一個支持 PHP 4.3.8 和MySQL 4.0.20 標准的主機站點上運行 installer 和 PHP 腳本的。服務器操作系統是 Linux 2.4.21-15.ELsmp,Web 服務器是 Apache 1.3.31。