ADOdb Library for PHP Manual
Prev Database Driver Guide Next

Database Driver Guide

This describes how to create a class to connect to a new database. To ensure there is no duplication of work, kindly email me at jlim#natsoft.com.my if you decide to create such a class.

First decide on a name in lower case to call the database type. Let's say we call it xbase.

Then we need to create two classes ADODB_xbase and ADORecordSet_xbase in the file adodb-xbase.inc.php.

The simplest form of database driver is an adaptation of an existing ODBC driver. Then we just need to create the class ADODB_xbase extends ADODB_odbc to support the new date and timestamp formats, the concatenation operator used, true and false. For the ADORecordSet_xbase extends ADORecordSet_odbc we need to change the MetaType function. See adodb-vfp.inc.php as an example.

More complicated is a totally new database driver that connects to a new PHP extension. Then you will need to implement several functions. Fortunately, you do not have to modify most of the complex code. You only need to override a few stub functions. See adodb-mysql.inc.php for an example.

The default date format of ADOdb internally is YYYY-MM-DD (Ansi-92). All dates should be converted to that format when passing to an ADOdb date function. See Oracle for an example how we use ALTER SESSION to change the default date format in _pconnect _connect.

ADOConnection Functions to Override

Defining a constructor for your ADOConnection derived function is optional. There is no need to call the base class constructor.

_connect: Low level implementation of Connect. Returns true or false. Should set the _connectionID.

_pconnect: Low level implemention of PConnect. Returns true or false. Should set the _connectionID.

_query: Execute a query. Returns the queryID, or false.

_close: Close the connection -- PHP should clean up all recordsets.

ErrorMsg: Stores the error message in the private variable _errorMsg.

ADOConnection Fields to Set

_bindInputArray: Set to true if binding of parameters for SQL inserts and updates is allowed using ?, eg. as with ODBC.

fmtDate

fmtTimeStamp

true

false

concat_operator

replaceQuote

hasLimit support SELECT * FROM TABLE LIMIT 10 of MySQL.

hasTop support Microsoft style SELECT TOP 10 * FROM TABLE.

ADORecordSet Functions to Override

You will need to define a constructor for your ADORecordSet derived class that calls the parent class constructor.

FetchField: as documented above in ADORecordSet

_initrs: low level initialization of the recordset: setup the _numOfRows and _numOfFields fields -- called by the constructor.

_seek: seek to a particular row. Do not load the data into the fields array. This is done by _fetch. Returns true or false. Note that some implementations such as Interbase do not support seek. Set canSeek to false.

_fetch: fetch a row using the database extension function and then move to the next row. Sets the fields array. If the parameter $ignore_fields is true then there is no need to populate the fields array, just move to the next row. then Returns true or false.

_close: close the recordset

Fields: If the array row returned by the PHP extension is not an associative one, you will have to override this. See adodb-odbc.inc.php for an example. For databases such as MySQL and MSSQL where an associative array is returned, there is no need to override this function.

ADOConnection Fields to Set

canSeek: Set to true if the _seek function works.


Prev Home Next
rs2html Up ToDo

Sponsored by phpLens