PDO_IBM DSN
(PECL PDO_IBM >= 0.9.0)
PDO_IBM DSN — Connecting to IBM databases
Description
The PDO_IBM Data Source Name (DSN) is based on the IBM CLI DSN. The major components of the PDO_IBM DSN are:
- DSN prefix
-
The DSN prefix is
ibm:
. - DSN
-
The DSN can be any of the following:
-
a) Data source setup using db2cli.ini or odbc.ini
-
b) Catalogued database name i.e. database alias in the DB2 client catalog
-
c) Complete connection string in the following format:
DRIVER={IBM DB2 ODBC DRIVER};DATABASE=
where the parameters represent the following values:database
;HOSTNAME=hostname
;PORT=port
;PROTOCOL=TCPIP;UID=username
;PWD=password
;-
database
-
The name of the database.
-
hostname
-
The hostname or IP address of the database server.
-
port
-
The TCP/IP port on which the database is listening for requests.
-
username
-
The username with which you are connecting to the database.
-
password
-
The password with which you are connecting to the database.
-
-
Examples
Example #1 PDO_IBM DSN example using db2cli.ini
The following example shows a PDO_IBM DSN for connecting to an DB2 database cataloged as DB2_9 in db2cli.ini:
$db = new PDO("ibm:DSN=DB2_9", "", ""); [DB2_9] Database=testdb Protocol=tcpip Hostname=11.22.33.444 Servicename=56789
Example #2 PDO_IBM DSN example using a connection string
The following example shows a PDO_IBM DSN for connecting to an DB2
database named testdb
using the DB2 CLI
connection string syntax.
$db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;" . "HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;", "testuser", "tespass");
Коментарии
The connection string is wrong for the example :
$db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;" .
"HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;", "testuser", "tespass");
You get the PDO Exception with the error code -1329.
You have to write :
$db = new PDO(
"ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;" .
"HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;UID=testuser;PWD=testpass",
"",
"");
To correctly display and otherwise handle strings from Db2 in php you should set an environmental variable DB2CODEPAGE. For UTF-8 database it is usually 1208.
For example, put
env[DB2CODEPAGE] = 1208
in your /etc/php-fpm.d/www.conf file.