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 — Conexión a las bases de datos IBM
El nombre de la fuente de datos PDO_IBM (DSN) se basa en el IBM CLI DSN. Los componentes principales de PDO_IBM DSN son :
El prefijo DSN es ibm:.
El DSN puede ser uno de los siguientes :
a) Configuración de la fuente de datos utilizando el archivo db2cli.ini o odbc.ini
b) Nombre de base de datos catalogado, es decir, alias de base de datos contenidos en el catálogo del cliente DB2
c) Cadena de conexión completa en el siguiente formato :
DRIVER={IBM DB2 ODBC DRIVER};DATABASE=
donde los parámetros representan los siguientes valores :
database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;
databaseEl nombre de la base de datos.
hostnameEl nombre del host o la dirección IP del servidor de base de datos.
portEl puerto TCP/IP en el que la base de datos escucha las consultas.
usernameEl nombre de usuario utilizado para la conexión a la base de datos.
passwordLa contraseña utilizada para la conexión a la base de datos.
Ejemplo #1 Ejemplo con PDO_IBM DSN utilizando db2cli.ini
El siguiente ejemplo muestra el uso de PDO_IBM DSN para la conexión a una base de datos DB2 catalogada como DB2_9 en el archivo db2cli.ini :
$db = new PDO("ibm:DSN=DB2_9", "", "");
[DB2_9]
Database=testdb
Protocol=tcpip
Hostname=11.22.33.444
Servicename=56789
Ejemplo #2 Ejemplo con PDO_IBM DSN utilizando una cadena completa de conexión
El siguiente ejemplo muestra el uso de PDO_IBM DSN para la conexión a una
base de datos DB2 llamada testdb utilizando
la cadena completa de conexión DB2 CLI :
$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",
"",
"");