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é, i.e. 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",
"",
"");