Php/docs/ref.pdo-odbc
Introduction
PDO_ODBC is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to databases through ODBC drivers or through the IBM DB2 Call Level Interface (DB2 CLI) library. PDO_ODBC currently supports three different "flavours" of database drivers:
- ibm-db2
- Supports access to IBM DB2 Universal Database, Cloudscape, and Apache Derby servers through the free DB2 express-C client.
- unixODBC
- Supports access to database servers through the unixODBC driver manager and the database's own ODBC drivers.
- generic
- Offers a compile option for ODBC driver managers that are not explicitly supported by PDO_ODBC.
On Windows, php_pdo_odbc.dll
has to be enabled as
extension in php.ini
. It is linked
against the Windows ODBC Driver Manager so that PHP can connect to any
database cataloged as a System DSN, and is the recommended driver for
connecting to Microsoft SQL Server databases.
Installation
PDO_ODBC on UNIX systems
As of PHP 5.1, PDO_ODBC is included in the PHP source. You can compile the PDO_ODBC extension as either a static or shared module using the following configure commands.
- ibm_db2
./configure --with-pdo-odbc=ibm-db2,/opt/IBM/db2/V8.1/
To build PDO_ODBC with the ibm-db2 flavour, you have to have previously installed the DB2 application development headers on the same machine on which you are compiling PDO_ODBC. The DB2 application development headers are an installable option in the DB2 servers, and are also available as part of the DB2 Application Development Client freely available for download from the IBM developerWorks » website.
If you do not supply a location for the DB2 libraries and headers to the configure command, PDO_ODBC defaults to
/home/db2inst1/sqllib
.- unixODBC
./configure --with-pdo-odbc=unixODBC,/usr/local
If you do not supply a location for the unixODBC libraries and headers to the configure command, PDO_ODBC
defaults to/usr/local
.- generic
./configure --with-pdo-odbc=generic,/usr/local,libname,ldflags,cflags
Predefined Constants
The constants below are defined by
this driver, and will only be available when the extension has been either
compiled into PHP or dynamically loaded at runtime. In addition, these
driver-specific constants should only be used if you are using this driver.
Using driver-specific attributes with another driver may result in
unexpected behaviour. PDO::getAttribute() may be used to
obtain the PDO::ATTR_DRIVER_NAME
attribute to check the
driver, if your code can run against multiple drivers.
PDO::ODBC_ATTR_USE_CURSOR_LIBRARY
(int)- This option controls whether the ODBC cursor library is used. The ODBC cursor library supports some advanced ODBC features (e.g. block scrollable cursors), which may not be implemented by the driver. The following values are supported:
PDO::ODBC_SQL_USE_IF_NEEDED
(the default)- use the ODBC cursor library when needed.
PDO::ODBC_SQL_USE_DRIVER
: never use the ODBC cursor library.PDO::ODBC_SQL_USE_ODBC
: always use the ODBC cursor library.
PDO::ODBC_ATTR_ASSUME_UTF8
(bool)- Windows only. If
TRUE
, UTF-16 encoded character data (CHAR
,VARCHAR
andLONGVARCHAR
) is converted to UTF-8 when reading from or writing data to the database. IfFALSE
(the default), no character encoding conversion is done.
Runtime Configuration
The behaviour of these functions is affected by settings in php.ini
.
Name | Default | Changeable | Changelog |
---|---|---|---|
pdo_odbc.connection_pooling | "strict" | PHP_INI_ALL | Available since PHP 5.1.0. |
pdo_odbc.db2_instance_name | NULL | PHP_INI_SYSTEM | Available since PHP 5.1.1. This deprecated feature will
certainly be removed in the future. |
For further details and definitions of the PHP_INI_* modes, see the Where a configuration setting may be set. Here's a short explanation of the configuration directives.
pdo_odbc.connection_pooling
stringWhether to pool ODBC connections. Can be one of
"strict"
,"relaxed"
or"off"
(equals to""
). The parameter describes how strict the connection manager should be when matching connection parameters to existing pooled connections.strict
is the recommend default, and will result in the use of cached connections only when all the connection parameters match exactly.relaxed
will result in the use of cached connections when similar connection parameters are used. This can result in increased use of the cache, at the risk of bleeding connection information between (for example) virtual hosts.This setting can only be changed from the
php.ini
file, and affects the entire process; any other modules loaded into the process that use the same ODBC libraries will be affected too, including the Unified ODBC extension.Warning
relaxed
matching should not be used on a shared server, for security reasons.Tip
Leave this setting at the default
strict
setting unless you have good reason to change it.pdo_odbc.db2_instance_name
stringIf you compile PDO_ODBC using the
db2
flavour, this setting sets the value of the DB2INSTANCE environment variable on Linux and UNIX operating systems to the specified name of the DB2 instance. This enables PDO_ODBC to resolve the location of the DB2 libraries and make cataloged connections to DB2 databases.This setting can only be changed from the
php.ini
file, and affects the entire process; any other modules loaded into the process that use the same ODBC libraries will be affected too, including the Unified ODBC extension.This setting has no effect on Windows.
Table of Contents
- PDO_ODBC DSN — Connecting to ODBC or DB2 databases