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",
"",
"");