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.(PECL PDO_IBM >= 0.9.0)
PDO_IBM DSN — Connecting to IBM databases
The PDO_IBM Data Source Name (DSN) is based on the IBM CLI DSN. The major components of the PDO_IBM DSN are:
The DSN prefix is ibm:.
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;
databaseThe name of the database.
hostnameThe hostname or IP address of the database server.
portThe TCP/IP port on which the database is listening for requests.
usernameThe username with which you are connecting to the database.
passwordThe password with which you are connecting to the database.
示例 #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
示例 #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");
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.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",
"",
"");