這一篇是ADOdb Database Abstraction Library for PHP (and Python).中譯版本,原作者還沒回應,不過我還是先放上來,如有問題我在拿下!
ADOdb 是PHP的資料庫抽象層的函式庫,目前也有Python的版本;查看 ADOdb for Python docs。
PHP 的版本目前支援很多種的資料庫,感謝這個美好的 ADOdb 社群: MySQL、PostgreSQL、 Interbase、 Firebird、 Informix、 Oracle、 MS SQL、 Foxpro、 Access、 ADO、 Sybase、 FrontBase、 DB2、 SAP DB、 SQLite、 Netezza、 LDAP及 generic ODBC、 ODBTP,Sybase、 Informix、 FrontBase 及 PostgreSQL、 Netezza、 LDAP、 ODBTP 等的驅動是社群的貢獻,這裡有 完整的列表。
許多有名的網站應用程式像是 ACID、 PostNuke、 Xaraya、 phpWiki、 Mambo、 PHP GACL、 TikiWiki、 eGroupWare 及 phpLens App Server 都使用 ADOdb 作為他們的資料庫抽象層,一些ADOdb受歡迎的原因有:
include('/path/to/adodb.inc.php');
$DB = NewADOConnection('mysql');
$DB->Connect($server, $user, $pwd, $db);
# M'soft style data retrieval with binds
$rs = $DB->Execute("select * from table where key=?",array($key));
while (!$rs->EOF) {
print_r($rs->fields);
$rs->MoveNext();
}
# PEAR style data retrieval
$rs = $DB->Execute("select * from table where key=123");
while ($array = $rs->FetchRow()) {
print_r($array);
}
# Alternative URI connection syntax:
$DB = NewADOConnection("mysql://$user:$pwd@$server/$db?persist");
# No need for Connect or PConnect when using URI syntax
$ok = $DB->Execute("update atable set aval = 0");
if (!$ok) mylogerr($DB->ErrorMsg());
Other things you can try include:
# Updating tables
$ok = $DB->Execute("update table set col1=? where key=?",array($colval, $key));
# retrieving data shortcuts
$val = $DB->GetOne("select col from table where key='John'");
$row = $DB->GetRow("select col from table where key='John'");
$arr = $DB->GetAll("select col from table");
$arr = $DB->GetAssoc("select key,col from table"); # returns associative array $key=>col
# Retrieve high speed cached recordsets (cached for 3600 secs)
# Cache directory defined in global $ADODB_CACHE_DIR.
# CacheGetOne, CacheRow, CacheGetAll all work
$rs = $DB->CacheExecute(3600, "select orgname from users where user='JOHN'");
還有更多的 連線範例 告訴你如何連接 SQLite、 Oracle、 PostgreSQL、 Microsoft SQL Server、 MS Access、 LDAP、 Interbase/Firebird 等等。
ADOdb 已經完全支援 PHP5 ,包括 SPL 及其擴充的支援,舉個例,你可以在PHP5中這樣做:
$rs = $DB->Execute("select * from table");
foreach ($rs as $row) {
print_r($row);
}
假如你含括下列的 adodb-exceptions.inc.php 檔,那麼 ADOdb 在碰到錯誤的時候將會擲出異常處理:
include("/path/to/adodb-exceptions.inc.php");
include("/path/to/adodb.inc.php");
$DB = NewADOConnection('oci8');
$DB->Connect("", "scott", "tiger");
try {
$DB->Execute("select badsql from badtable");
} catch (exception $e) {
print_r($e);
}
需求: PHP 4.1.0 或之後,也可以在 PHP5 使用 (PHP 4.0.5 或 4.0.6 使用 ADOdb 4.61)。
安裝: 解壓縮檔案到一個資料夾,試試上面的範例程式碼,調整一下連接的參數以適合你的資料庫伺服器的使用,並修改sq來配合你的資料表。
偵錯: 設定你連接的除錯屬性,例如 $DB->debug=true; 假如你有問題,它將輸出一堆有用的狀態及錯誤訊息。
ADOdb Lite 是一個不同 PHP 專案是由另一個第三者廠商縮減 ADOdb 函式庫來使用。
需要 Python 2.3 或之後的版本,可以跟 Psyco配合使用。
從 SourceForge Python ADOdb 文件下載
Adodb-ext-504.zip 藉著一些C程式碼取代一部份的ADOdb來提供快一倍的加速, ADOdb 會自動偵測使否有安裝此擴充並且會自動使用它,這個擴充相容於 ADOdb 3.32 或之後的版本,及 PHP 4.3.*、 4.4.*、 5.0.* 跟 5.1.*,原始碼有所有的平台而Windows的二進制版本也有包含。
2005/11/26 釋出5.1相容版本。
2005/7/27 釋出4.4相容版本。
2004/11/29 釋出 thread-safe PHP4 及 PHP5 相容版本,並且較少的 dll 相依的需求, PHP 5:測試在 RedHat8 在 WinXP, PHP 4.3.3:測試在 RedHat8、 WinXP 及 Win2000。
One HTML Page (這是一直在更新的)
Multiple HTML Pages
Windows CHM Format
Data Dictionary 概要的建構。
Performance Monitoring.
Database-backed Session Management.
MySQL Tutorial
Advanced Oracle Tutorial
Portable SQL Tips with ADOdb
ADOdb Active Record 及資料庫紀錄的OOP封裝。
icarus在DevShed 寫了一些有關ADOdb優秀的文章,新版的文章在 MelonFire:
Part 1 on Basics 及 Part 2 on Advanced ADOdb, 原來的文章在 DevShed。
已經有的其他語言的PHP文件:
以及教學:
ADOdb News List: 少量的修改過得郵件群組關於ADOdb的新聞及更新由作者所管理。
ADOdb General ListADOdb未修改過得郵件群組,這個不是由作者所監控。
對於錯誤報告、功能的需求及問題,可以使用 ADOdb Forums,作者有在監控這個論壇。