2013-11-02 48 views
-1
@ $db = mssql_connect('127.0.0.1','sa','ijg098u'); 
if (!$db || !mssql_select_db('test')) { 
    exit('db connect error'); 
} 
$str = "insert into comments(name, comment) values('$name', '$comment')"; 
if (!mssql_query($str)) { 
    exit ('db insert error'); 
} 

當$ name或$ comment有奇怪的字符,例如重音字符或CJK字符時,它失敗。但是,如果您回顯$ str,並將其粘貼到MS SQL Server Studio的查詢分析器中並執行,它就會成功。mssql_query()和mssql服務器

看來這個問題必須發生在函數調用mssql_query中。最近我還沒有看到該函數的源代碼。它有一個錯誤嗎?

任何意見讚賞。

+0

嘗試http://php.net/manual/en/function.mssql-get-last-message.php查看是否有任何錯誤 – adam187

回答

1

我剛剛發現了一個針對該問題的解決方案 - 將MS SQL Server排序規則從某種特定類型更改爲「Latin1_gereral二進制代碼點」。上面提到的php腳本執行成功。

似乎MS SQL Server應根據其排序規則設置更改查詢字符串。

對於英語或其他拉丁語言,這個問題將永遠不會發生。但對於許多其他多字節語言字符而言,這似乎是一個問題。