====== PDO ====== ~~NOTOC~~ There is a breaking change in the feature from V5. The connection string has changed ===== Description ===== This driver supports connections using the standardized [[http://php.net/manual/en/book.pdo.php|PHP Data Objects]] connection. The ''pdo'' driver itself cannot be used, it must be used with one of the supported drivers: ^ PHP Driver ^ Description ^ ADOdb Connector ^ | pdo_firebird | Firebird | pdo\firebird | | pdo_ibm | IBM DB2 | pdo\ibm | | pdo_mysql | MySQL | pdo\mysql | | pdo_oci | Oracle | pdo\oci | | pdo_pgsql | Postgresql | pdo\pgsql | | pdo_sqlite | SQLite | pdo\sqlite | | pdo_sqlsrv | SQL Server using Windows Native Client | pdo\sqlsrv | ===== 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\mysql'); $user = 'pdo-user'; $password = 'pdo-pass'; $dsnString= 'host=localhost;dbname=employees;charset=utf8mb4'; $db->connect($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). ===== The PDO setAttribute function ===== The PDO::setAttribute() method can be emulated using [[v6:reference:connection:setconnectionparameter|setConnectionParameter()]]. ===== Driver Functionality ===== Each supported driver offers the same functionality as the native mode one, unless specifically noted below ===== Individual Driver Status ==== ----------------------- ==== pdo_mssql ==== == Preferred Driver == [[v6:database:microsoft_sql_server#mssqlnative|Microsoft native mode driver For Linux]]\\ [[v6:database:microsoft_sql_server#mssql|FreeTDS Driver For Unix]]\\ == Specification == ^Driver Name|pdo| ^Data Provider|pdo| ^Status|Inactive((This driver is not supported by ADOdb project members, but you can contribute to this driver if you have the expertise))| ^Windows|No| ^Unix|Yes| ^ADOdb V5|Yes| ^ADOdb V6|Yes| The current status of this driver is unknown. Consider using the [[v6:database:pdo#pdo_sqlsrv|mssqlnative]] driver instead. ------------------------------------------ ==== pdo_mysql ==== == Preferred Driver == [[v6:database:mysql|mysqli]]\\ == Specification == ^Driver Name|pdo| ^Data Provider|pdo| ^Status|Active((This driver is supported by ADOdb project members))| ^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 ==== == Preferred Driver == [[v6:database:oracle|oci8]]\\ == Specification == ^Driver Name|pdo| ^Data Provider|pdo| ^Status|Active((This driver is supported by ADOdb project members))| ^Windows|Yes| ^Unix|Yes| ^ADOdb V5|Yes| ^ADOdb V6|Yes| == 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 ==== == Preferred Driver == [[v6:database:postgresql|postgres9]]\\ == Specification == ^Driver Name|pdo| ^Data Provider|pdo| ^Status|Active((This driver is supported by ADOdb project members))| ^Windows|Yes| ^Unix|Yes| ^ADOdb V5|Yes| ^ADOdb V6|Yes| === 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 == [[v6:database:sqlite]]\\ == Specification == ^Driver Name|pdo| ^Data Provider|pdo| ^Status|Active((This driver is supported by ADOdb project members))| ^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 == [[v6:database:microsoft_sql_server#mssqlnative|Native Mode Driver]]\\ == Specification == ^Driver Name|pdo| ^Data Provider|pdo| ^Status|Active((This driver is supported by ADOdb project members))| ^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 [[https://www.microsoft.com/en-us/download/details.aspx?id=20098|Microsoft SQL Server PDO drivers for PHP]] * Dates are always returned as strings * Most //**Meta**// functions are unsupported * [[v6:reference:connection:setconnectionparameter|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 [[v6:database:microsoft_sql_server|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 ==== This driver is available from version 5.21 == Native Driver == [[v6:database:firebird|Firebird/Interbase Driver]]\\ == Specification == ^Driver Name|pdo| ^Data Provider|pdo| ^Status|Active((This driver is supported by ADOdb project members))| ^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 [[https://bugs.php.net/bug.php?id=72175|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); {{tag>tier2 v6}}