要在 PHP 中正確顯示和處理來自 DB2 的字串,您應該設定環境變數 DB2CODEPAGE。對於 UTF-8 資料庫,它通常是 1208。
例如,在您的 /etc/php-fpm.d/www.conf 檔案中加入
env[DB2CODEPAGE] = 1208
這一行。
(PECL PDO_IBM >= 0.9.0)
PDO_IBM DSN — 連線到 IBM 資料庫
PDO_IBM 資料來源名稱 (DSN) 是基於 IBM CLI DSN。 PDO_IBM DSN 的主要組成部分為
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 位址。
連接埠
資料庫監聽請求的 TCP/IP 連接埠。
使用者名稱
您用來連線到資料庫的使用者名稱。
密碼
您用來連線到資料庫的密碼。
範例 #1 使用 db2cli.ini 的 PDO_IBM DSN 範例
以下範例顯示用於連線到在 db2cli.ini 中編錄為 DB2_9 的 DB2 資料庫的 PDO_IBM DSN。
$db = new PDO("ibm:DSN=DB2_9", "", ""); [DB2_9] Database=testdb Protocol=tcpip Hostname=11.22.33.444 Servicename=56789
範例 #2 使用連線字串的 PDO_IBM DSN 範例
以下範例顯示使用 DB2 CLI 連線字串語法連線到名為 testdb
的 DB2 資料庫的 PDO_IBM DSN。
$db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;" . "HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;", "testuser", "tespass");
要在 PHP 中正確顯示和處理來自 DB2 的字串,您應該設定環境變數 DB2CODEPAGE。對於 UTF-8 資料庫,它通常是 1208。
例如,在您的 /etc/php-fpm.d/www.conf 檔案中加入
env[DB2CODEPAGE] = 1208
這一行。
範例中的連線字串錯誤
$db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;" .
"HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;", "testuser", "tespass");
您會收到錯誤代碼為 -1329 的 PDO 例外狀況。
您必須寫成
$db = new PDO(
"ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;" .
"HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;UID=testuser;PWD=testpass",
"",
"");