## ADOdb Database Abstraction Library for PHP

© 2000-2014 John Lim (jlim#natsoft.com). All rights reserved.

Download Source code Documentation Support Changelog FAQ

ADOdb is a database abstraction library for PHP

It 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, 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

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

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) {
        print_r($row);
    }

If you include the following adodb-exceptions.inc.php file, then ADOdb will throw exceptions when an error occurs:

    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);
    }

### Download

Download from SourceForge

Requirements: PHP 5.0 or later.

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 Documentation

One HTML Page

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

#### Other Docs for PHP version

The documents in this section are maintained (or not, as the case may be) by their respective authors and are therefore potentially out of date or even obsolete.

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

A couple excellent articles by icarus about ADOdb at MelonFire:

Part 1 on Basics and Part 2 on Advanced ADOdb.

#### Translations

PHP documentation in other languages:

- Korean
- Spanish (Castellano)
- Japanese

and tutorials in:

- Chinese
- Francais
- German
- Italian
- Polish
- Spanish (Castellano)
- Thai

### Support

Bug reports, feature requests and questions should be filed on Github.

The legacy ADOdb forums are still available, however they are not actively monitored and should only be used as reference.

© 2000-2014 John Lim. All Rights Reserved. Contact: jlim#natsoft.com