This is an old revision of the document!
PDO
Description
This driver supports connections using the standardized PHP Data Objects.
Supported drivers:
PHP Driver | Description | ADOdb Connector |
---|---|---|
pdo_firebird | Firebird | firebird |
pdo_mssql | SQL Server with FREETDS | mssql |
pdo_mysql | MySQL | mysql |
pdo_oci | Oracle | oci |
pdo_pgsql | Postgresql | pgsql |
pdo_sqlite | SQLite | sqlite |
pdo_sqlsrv | SQL Server using Windows Native Client | sqlsrv |
Note that the pdo driver cannot be used on its own. It is a technical component that is used internally by the above drivers.
Establishing A Connection
To establish a connection, the DSN style of connection must be used, the first argument of the DSN string being the database type, e.g. to connect to a MySQL database:
include_once 'adodb/adodb.inc.php'; $db = ADOnewConnection('pdo'); $user = 'pdo-user'; $password = 'pdo-pass'; $dsnString= 'host=localhost;dbname=employees;charset=utf8mb4'; $db->connect('mysql:' . $dsnString,$user,$password);
Note that in the above example, the database type is separated from the rest of the DSN string by a : (colon). The rest of the DSN arguments are separated by a ; (semi-colon).
Preferred Drivers
Using ADOdb effectively eliminates the need to use the PHP PDO driver as it hides the PHP level command:
- It provides true database abstraction, for example, the ADOdb method
selectLimit()
provides a true abstraction of the row limiting and offset of all databases. With PDO, you still need to provide the database specific syntax. - In all cases, using native drivers (listed below) provide better functionality, as well as performance, than the equivalent PDO driver. This is true at both the ADOdb and PHP level
Setting Construction Parameters
Certain attributes need to be passed to the PDO Constructor, for example, changing the error mode. To facilitate this, a PDO specific settable array ADOConnection::pdoOptions
is provided:
$db = newAdoConnection('pdo'); $db->pdoOptions = [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION ]; $dsnString= 'host=localhost;dbname=employee.fdb'; $db->connect('firebird:' . $dsnString,"SYSDBA", "password");
The PDO setAttribute function
For parameters that are set after the class is instantiated, The PDO::setAttribute() method can be populated using setConnectionParameter().
Individual Driver Status
pdo_mssql
Preferred Driver
Microsoft native mode driver For Linux
FreeTDS Driver For Unix
Specification
Driver Name | pdo |
---|---|
Data Provider | pdo |
Status | Inactive1) |
Windows | No |
Unix | Yes |
ADOdb V5 | Yes |
ADOdb V6 | Yes |
The current status of this driver is unknown. Consider using the mssqlnative driver instead.
pdo_mysql
Preferred Driver
Specification
Driver Name | pdo |
---|---|
Data Provider | pdo |
Status | Active2) |
Windows | Yes |
Unix | No |
ADOdb V5 | Yes |
ADOdb V6 | Yes |
- Some Meta functions are unavailable
Sample Connection String
include 'adodb-dir/adodb.inc.php'; $db = ADOnewConnection('pdo'); $dsn = 'mysql:hostname=127.0.0.1;database=employees;' $user = 'user'; $password = 'password' $db->connect($dsn,$user,$password);
pdo_oci
Limitations
- There is no support for the complex binding features available in the Native Driver
- Some MetaFunctions are unavailable
Sample Connection String
If you are using the instantclient, and there is no tsnames.ora defined, you can define a connection like this
//Connecting to Oracle Express on 192.168.86.86 $tns = " (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.86.86)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = XEPDB1) ) ) "; $dsnString="oci:dbname=$tns"; $db->connect($dsnString,$userName,$password);
pdo_pgsql
Status
Some features are not supported
Sample Connection String
$db = newAdoConnection('pdo'); $dsn = 'pgsql:host=192.168.0.212;dbname=dvdrental'; $user = 'someuser'; $pass = 'somepass'; $db->connect($dsn,$user,$pass);
pdo_sqlite
Preferred Driver
Specification
Driver Name | pdo |
---|---|
Data Provider | pdo |
Status | Active5) |
Windows | Yes |
Unix | No |
ADOdb V5 | Yes |
ADOdb V6 | Yes |
Sample Connection String
include 'adodb-dir/adodb.inc.php'; $db = ADOnewConnection('pdo'); $dsn = 'sqlite:/home/sqlite/adodb-sqlite.db'; $user = 'root'; $db->connect($dsn,$user);
pdo_sqlsrv
Preferred Driver
Specification
Driver Name | pdo |
---|---|
Data Provider | pdo |
Status | Active6) |
Windows | Yes |
Unix | Yes |
ADOdb V5 | Yes |
ADOdb V6 | Yes |
- This driver requires the installation of the Microsoft native client library, as well as the Microsoft SQL Server PDO drivers for PHP
- Dates are always returned as strings
- Most Meta functions are unsupported
- setConnectionParameter() is not supported
- This driver can also be used on Linux platforms, beginning with PHP Version 7. The program relies on the Microsoft drivers for Linux. For more information, see the mssqlnative driver
- You cannot change the character set in the driver. This is a limitation of the PDO driver, not ADOdb
- No support for parameter binding
Sample Connection String
include 'adodb-dir/adodb.inc.php'; $db = ADOnewConnection('pdo'); $user = 'user'; $pass = 'password'; $dsn ='sqlsrv:server=SERVER\SQLEXPRESS;database=NORTHWND;'; $db->connect($dsn,$user,$password);
pdo_firebird
Native Driver
Specification
Driver Name | pdo |
---|---|
Data Provider | pdo |
Status | Active7) |
Windows | Yes |
Unix | Yes |
ADOdb V5 | Yes |
ADOdb V6 | Yes |
Unlike other pdo drivers, pdo_firebird is the preferred driver for this database. This is due to specific issues with this driver reported here.
Sample Connection String
include 'adodb-dir/adodb.inc.php'; $db = ADOnewConnection('pdo'); $dsn = 'firebird:dbname=employee.fdb;hostname=localhost'; $user = 'SYSDBA'; $pass = 'master-key'; $db->connect($dsn,$user,$pass);