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
;
database
Le nom de la base de données.
hostname
Le nom de l'hôte ou l'adresse IP du serveur de base de données.
port
Le port TCP/IP sur lequel la base de données écoute les requêtes.
username
Le nom d'utilisateur utilisé pour la connexion à la base de données.
password
Le 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",
"",
"");