ADOdb Database Abstraction Library for PHP (and Python)

(c) 2000-2011 John Lim ( All rights reserved.

Download   Documentation   Forums (post bug reports here)   Changelog  FAQ

ADOdb is a database abstraction library for PHP. There is also a Python version; see the ADOdb for Python docs.

The PHP version currently supports an amazing number of databases, thanks to the wonderful ADOdb community: MySQL, PostgreSQL, Interbase, Firebird, Informix, Oracle, MS SQL, Foxpro, Access, ADO, Sybase, FrontBase, DB2, SAP DB, SQLite, Netezza, LDAP, and generic ODBC, ODBTP. The Sybase, Informix, FrontBase and PostgreSQL, Netezza, LDAP, ODBTP drivers are community contributions. Here is the complete list of drivers.

Many popular web applications such as ACID, Zikula/PostNuke, Xaraya, phpWiki, Mambo, PHP GACL, TikiWiki, eGroupWare and phpLens App Server are using ADOdb as their database abstraction layer. Some reasons why ADOdb is popular include:

  • Designed for speed. It is probably the fastest open source database abstraction library available for PHP. See benchmarks.
  • Provides extensive portability support such as date and type-handling and portable schema creation. See portable sql tips
  • Support many enterprise features such as database backed sessions (with session expiry notification), SQL code generation, pivot tables, SELECT LIMIT emulation for all databases, performance monitoring.
  • Easy to learn, especially if you have Window's programming experience, as it uses many ADO conventions.
  • Extensive QA, every release is unit-tested on Access, MySQL, PostgreSQL, MS SQL, Oracle 11g.
  • Mature, continiously developed since August 2000. Has a large community of users.
  • Powerful Active Record support. See docs.
  • Very reasonable licensing terms (BSD). This means that you can incorporate (and even compile) it into your software applications royalty-free without asking the author's permission, provided you include license.txt in your release. Also dual-licensed (Lesser GPL).

PHP Code Samples

$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'");
And there are more connection examples showing you how to connect to SQLite, Oracle, PostgreSQL, Microsoft SQL Server, MS Access, LDAP, Interbase/Firebird etc.

PHP5 Support

ADOdb has full PHP5 support, including SPL and exception support. For example, you can do this in PHP5:
$rs = $DB->Execute("select * from table");
foreach ($rs as $row) {
If you include the following file, then ADOdb will throw exceptions when an error occurs:
$DB = NewADOConnection('oci8');
$DB->Connect("", "scott", "tiger");
try {
$DB->Execute("select badsql from badtable");
} catch (exception $e) {

PHP Download

Download from SourceForge

Requirements: PHP 5.0 or later. There is a version available that works with PHP 4.1 to 5.2 also.

Installation: Unpack files into a directory. Try the above sample code, adjusting the connection parameters to suit your database server, and modify the sql to match your tables.

Debugging: Set your connection's debug property, e.g. $DB->debug=true; if you are having problems. It will output lots of useful status and error messages.

ADOdb Lite

ADOdb Lite is a separate PHP project done by a 3rd party to cut down the ADOdb library to use a smaller footprint.

Python Downloads

Requires Python 2.3 or later. Works fine with Psyco.

Download from SourceForge   Python ADOdb Docs

Speed Up Your PHP Code with the ADOdb extension provides up to 100% speedup by replacing parts of ADOdb with C code. ADOdb will auto-detect if this extension is installed and use it automatically. This extension is compatible with ADOdb 3.32 or later, and PHP 4.3 - 5.x.x. Source code is included. Please note that you will need to compile it yourself. Instructions included.

PHP Documentation

One HTML Page (this is always the most up-to-date)
Multiple HTML Pages
Windows CHM Format

Python ADOdb Docs

Other Docs for PHP version

Data Dictionary for schema creation.
Performance Monitoring.
Database-backed Session Management.

MySQL Tutorial
Advanced Oracle Tutorial
Portable SQL Tips with ADOdb
ADOdb Active Record, an OOP encapsulation of a database record.

DevShed has some excellent articles by icarus about ADOdb. Latest version of articles at MelonFire:

    Part 1 on Basics and Part 2 on Advanced ADOdb. Original articles at DevShed.


We have PHP documentation in other languages:

and tutorials in:

Mailing Lists

For bug reports, feature requests and questions, use the ADOdb Forums. The author monitors this forum.

(c) 2000-2008 John Lim. All Rights Reserved. Contact: