$str = 'BEGIN This is a "quote" test. \'Single\' END';
echo $str . "\n";
echo mysql_real_escape_string($str);
// Outputs:
BEGIN This is a "quote" test. 'Single' END
BEGIN This is a \"quote\" test. \'Single\' END
在CentOS上运行PHP 5.3.2。据我所知,mysql_real_escape_string()
只会转义单引号以防止sql注入。双引号与此无关,因为"
不会在MySQL中开始或结束字符串文字!
这会导致反斜杠插入到数据中!我明显不想要的东西。
答案 0 :(得分:3)
"
确实在MySQL中启动了一个字符串。 (见:Strings)
例外:
如果是ANSI_QUOTES SQL模式 启用后,可以引用字符串文字 仅在单引号内 因为一个字符串在double内引用 引号被解释为 标识符
答案 1 :(得分:0)
听起来神奇的引号已经开启。
这篇文章详细介绍了您的问题以及修复程序。 http://www.sitepoint.com/forums/showthread.php?t=545824