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 — Conectando-se a bancos de dados IBM
O Nome da Fonte de Dados (DSN) PDO_IBM é baseado no DSN IBM CLI. Os principais componentes do DSN PDO_IBM são:
O prefixo DSN é ibm:
.
O DSN pode ser qualquer um dos seguintes:
a) Configuração da fonte de dados usando db2cli.ini ou odbc.ini
b) Nome do banco de dados catalogado, ou seja, apelido do banco de dados no catálogo do cliente DB2
c) String de conexão completa no seguinte formato:
DRIVER={IBM DB2 ODBC DRIVER};DATABASE=
onde os parâmetros representam os seguintes valores:
database
;HOSTNAME=hostname
;PORT=port
;PROTOCOL=TCPIP;UID=username
;PWD=password
;
database
O nome do banco de dados.
hostname
O nome ou endereço do servidor de banco de dados.
port
A porta TCP/IP na qual o banco de dados está atendendo requisições.
username
O nome de usuário com o qual será feita a conexão ao banco de dados.
password
A senha com a qual será feita a conexão ao banco de dados.
Exemplo #1 Exemplo de DSN PDO_IBM usando db2cli.ini
O exemplo a seguir mostra um DSN PDO_IBM para conexão com um banco de dados DB2 catalogado como DB2_9 em db2cli.ini:
$db = new PDO("ibm:DSN=DB2_9", "", ""); [DB2_9] Database=db_teste Protocol=tcpip Hostname=11.22.33.444 Servicename=56789
Exemplo #2 Exemplo de DSN PDO_IBM usando uma string de conexão
O exemplo a seguir mostra um DSN PDO_IBM para conexão com um banco de dados
DB2 denominado testdb
usando a sintaxe da string de
conexão CLI do DB2.
$db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;" . "HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;", "usuario_teste", "senha_teste");
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",
"",
"");