PHP Conference Japan 2024

PDO_IBM DSN

(PECL PDO_IBM >= 0.9.0)

PDO_IBM DSNIBM データベースへの接続

説明

PDO_IBM のデータソース名 (DSN) は、IBM CLI DSN にもとづいています。 PDO_IBM DSN は、主に以下の部分から構成されます。

DSN プレフィックス

DSN プレフィックスは ibm: です。

DSN

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 db2cli.ini を使用した PDO_IBM DSN の例

この例は、PDO_IBM DSN で 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 接続文字列を使用した PDO_IBM DSN の例

この例は、PDO_IBM DSN で DB2 データベースに接続する方法を示すものです。 このデータベースの名前は testdb で、DB2 CLI の接続文字列構文を使用します。

$db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;" .
  "HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;", "testuser", "tespass");

add a note

User Contributed Notes 2 notes

up
0
user274091 at gmail dot com
2 months ago
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.
up
0
franck dot thomas at consult-ix dot fr
5 years ago
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",
"",
"");
To Top