您在這裡

ADODB手冊

/! 這一篇是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 等的驅動是社群的貢獻,這裡有 完整的列表

許多有名的網站應用程式像是 ACIDPostNukeXarayaphpWikiMamboPHP GACLTikiWikieGroupWarephpLens App Server 都使用 ADOdb 作為他們的資料庫抽象層,一些ADOdb受歡迎的原因有:

  • 設計快速,它可能是PHP裡最快的開放原始碼的資料庫抽象層,查看評效
  • 提供相當多的可攜性支援像是日期及型別的處理跟可攜性概要的建構,查看 portable sql tips
  • 支援很多的企業級功能 像是 database backed sessions (session 逾期提醒)、 SQL 碼的產生、樞紐分析表、 所有資料庫的SELECT LIMIT 模擬、效能監控。
  • 容易學習 特別是如果你有Windows的程式設計經驗,你會習慣使用很多的ADO一樣。
  • 很多的 QA Access、 MySQL、 PostgreSQL、 MS SQL、 Oracle 9每個版本都有單位在測試(unit-tested)。
  • 成熟 從2000年八月開始持續的發展中,擁有廣大社群的使用者。
  • 合理的授權期限 (BSD),這意味你可以免付專利費用以及不需詢問作者的許可將它合併入 (甚至是編譯) 你的軟體應用程式,在你的釋出中提供你含括 license.txt,另外這個套件採雙授權 (Lesser GPL)。

PHP 範例程式

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'");

還有更多的 連線範例 告訴你如何連接 SQLiteOraclePostgreSQLMicrosoft SQL ServerMS AccessLDAPInterbase/Firebird 等等。

PHP5 支援

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 版的下載

Download from SourceForge

需求: PHP 4.1.0 或之後,也可以在 PHP5 使用 (PHP 4.0.5 或 4.0.6 使用 ADOdb 4.61)。

安裝: 解壓縮檔案到一個資料夾,試試上面的範例程式碼,調整一下連接的參數以適合你的資料庫伺服器的使用,並修改sq來配合你的資料表。

偵錯: 設定你連接的除錯屬性,例如 $DB->debug=true; 假如你有問題,它將輸出一堆有用的狀態及錯誤訊息。

ADOdb Lite

ADOdb Lite 是一個不同 PHP 專案是由另一個第三者廠商縮減 ADOdb 函式庫來使用。

Python 版下載

需要 Python 2.3 或之後的版本,可以跟 Psyco配合使用。

從 SourceForge Python ADOdb 文件下載

用ADOdb擴充加速你的PHP程式

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。

PHP 文件

One HTML Page (這是一直在更新的)
Multiple HTML Pages
Windows CHM Format

Python ADOdb Docs

其他PHP版本的文件

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 BasicsPart 2 on Advanced ADOdb, 原來的文章在 DevShed

翻譯

已經有的其他語言的PHP文件:

以及教學:

郵件群組

ADOdb News List: 少量的修改過得郵件群組關於ADOdb的新聞及更新由作者所管理。

ADOdb General ListADOdb未修改過得郵件群組,這個不是由作者所監控。

對於錯誤報告、功能的需求及問題,可以使用 ADOdb Forums,作者有在監控這個論壇。