今天,mysql_real_escape_string()正在转义单引号和双引号

时间:2010-08-26 14:13:38

标签: php mysql

$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中开始或结束字符串文字!

这会导致反斜杠插入到数据中!我明显不想要的东西。

2 个答案:

答案 0 :(得分:3)

"确实在MySQL中启动了一个字符串。 (见:Strings

例外:

  

如果是ANSI_QUOTES SQL模式   启用后,可以引用字符串文字   仅在单引号内   因为一个字符串在double内引用   引号被解释为   标识符

答案 1 :(得分:0)

听起来神奇的引号已经开启。

这篇文章详细介绍了您的问题以及修复程序。 http://www.sitepoint.com/forums/showthread.php?t=545824