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 — Connexion aux bases de données IBM
Le nom de la source de données PDO_IBM (DSN) est basé sur le IBM CLI DSN. Les principaux composants de PDO_IBM DSN sont :
Le préfixe DSN est ibm:.
Le DSN peut être une valeur parmi celles-ci :
a) Configuration de la source des données en utilisant le fichier db2cli.ini ou odbc.ini
b) Nom de base de données catalogué, c.-à-d. alias de base de données contenus dans le catalogue du client DB2
c) Chaîne de connexion complète dans le format suivant :
DRIVER={IBM DB2 ODBC DRIVER};DATABASE=
où les paramètres représentent les valeurs suivantes :
database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;
databaseLe nom de la base de données.
hostnameLe nom de l'hôte ou l'adresse IP du serveur de base de données.
portLe port TCP/IP sur lequel la base de données écoute les requêtes.
usernameLe nom d'utilisateur utilisé pour la connexion à la base de données.
passwordLe mot de passe utilisé pour la connexion à la base de données.
Exemple #1 Exemple avec PDO_IBM DSN en utilisant db2cli.ini
L'exemple suivant montre l'utilisation de PDO_IBM DSN pour la connexion à une base de données DB2 cataloguée comme DB2_9 dans le fichier db2cli.ini :
$db = new PDO("ibm:DSN=DB2_9", "", "");
[DB2_9]
Database=testdb
Protocol=tcpip
Hostname=11.22.33.444
Servicename=56789
Exemple #2 Exemple avec PDO_IBM DSN en utilisant une chaîne complète de connexion
L'exemple suivant montre l'utilisation de PDO_IBM DSN pour la connexion à une
base de données DB2 nommé testdb en utilisant
la chaîne complète de connexion 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",
"",
"");