@ $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中。最近我还没有查看该函数的源代码。它有错误吗?
任何评论都表示赞赏。
答案 0 :(得分:1)
我刚刚找到了解决该问题的方法 - 将MS SQL Server排序规则从某种特定类型更改为“Latin1_gereral二进制代码点”。上面提到的php脚本执行成功。
MS SQL Server似乎应根据其整理设置更改查询字符串。
对于英语或其他拉丁语言,这个问题永远不会发生。但对于许多其他多字节语言字符来说,这似乎是一个问题。