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.(No version information available, might only be in Git)
DSN-строка подключения через драйвер PDO_IBM — Соединение с базой данных IBM
В основе DSN-строки подключения (англ. сокр.: Data Source Name — имя источника данных) через драйвер PDO_IBM лежит DSN-строка CLI-интерфейса IBM. Главные компоненты DSN-строки подключения через драйвер PDO_IBM:
DSN-префикс — строка ibm:.
DSN-строку указывают тремя способами:
a) Настройка источника данных в файле db2cli.ini или odbc.ini
b) Каталогизированное имя базы данных — псевдоним базы данных в каталоге клиента БД DB2
c) Полная строка подключения в следующем формате:
DRIVER={IBM DB2 ODBC DRIVER};DATABASE=,
где параметры представляют следующие значения:
database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;
databaseНазвание базы данных.
hostnameИмя хоста или IP-адрес сервера баз данных.
portПорт TCP/IP, на котором база данных слушает запросы.
usernameИмя пользователя.
passwordПароль пользователя.
Пример #1 Пример DSN-строки подключения через драйвер PDO_IBM с файлом db2cli.ini
Следующий пример показывает DSN-строку подключения через драйвер PDO_IBM для соединения с базой DB2, которую каталогизировали как DB2_9 в файле db2cli.ini:
$db = new PDO("ibm:DSN=DB2_9", "", "");
[DB2_9]
Database=testdb
Protocol=tcpip
Hostname=11.22.33.444
Servicename=56789
Пример #2 Пример DSN-строки подключения через драйвер PDO_IBM со строкой соединения
Следующий пример показывает DSN-строку подключения через драйвер PDO_IBM
для соединения с базой DB2 с названием testdb,
которую записали синтаксисом соединения с CLI-интерфейса БД DB2.
$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",
"",
"");