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
;
database
El nombre de la base de datos.
hostname
El nombre del host o la dirección IP del servidor de base de datos.
port
El puerto TCP/IP en el que la base de datos escucha las consultas.
username
El nombre de usuario utilizado para la conexión a la base de datos.
password
La 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",
"",
"");