[PHP] 用 MDB2 寫入 UTF-8 字串到 MSSQL 資料庫

發表時間: 2012-09-14 10:13:37
一劃 @ 114.34.1.251

PHP透過 PEAR_MDB2 在寫入 mssql 時, 雖然在freetds 宣告了 utf-8 格式, 但在寫入簡體中文時還昰會寫入變成問號(?), 比如我要寫入 "这是中文测试", 那麼在資料庫就會變成 "?是中文??", 中間穿插日文也是一樣, 直接在 SQL Server 上試時, 狀況也相同, 實在搞不清楚要調整SQL Server 哪裡才會正常, 但如果有寫入時強制規定字串為 N data type 則可成功寫入。


UPDATE abc SET name=N'这是中文测试'

因此, 在假設我之後所有寫入在mssql的字串資料都是 utf-8 的條件下, 直接修改 PEAR_MDB2 的內容
Driver/Datatype/Common.php
line:1233

 return "'".$value."'";

改為



if ($db->dbsyntax == 'mssql') {
return "N'".$value."'";
} else {
return "'".$value."'";
}

這樣就ok了