-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 中。最近我还没有查看该函数的源代码。里面有bug吗?

任何意见表示赞赏。

4

1 回答 1

1

我刚刚找到了解决该问题的方法——将 MS SQL Server 排序规则从某种特定类型更改为 "Latin1_gereral binary code point" 。上面提到的php脚本执行成功。

似乎 MS SQL Server 应根据其排序规则设置更改查询字符串。

对于英语或其他拉丁语,这个问题永远不会发生。但对于许多其他多字节语言字符来说,这似乎是一个问题。

于 2013-11-02T16:55:06.450 回答