MySQL_EXECURE_String与MySQL_REAL_EXECH_字符串

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

所以,这是我们大家都应该知道的事情,当我第一次看到它的时候,它就在我脑海中浮现。

我知道mysql_escape_string从5.3被否决,但实际的差别是什么?mysql_real_escape_string

我以为mysql_real_escape_stringmysql_escape_string除了mysql_real_escape_string获取MySQL资源的第二个参数。

因此,我认为,很明显,在字符串的处理方式上肯定有一些不同,因为不需要2个函数。

所以我想,这种区别完全是因为地点和字符编码。?。

有人能帮我澄清一下吗?

提问于
用户回答回答于

区别在于mysql_escape_string只需将字符串视为原始字节,并在它认为合适的地方添加转义。

mysql_real_escape_string另一方面,使用用于MySQL连接的字符集的信息。这意味着字符串在正确处理多字节字符的同时被转义;也就是说,它不会在字符中间插入转义字符。这就是为什么你需要连接mysql_real_escape_string这是必要的,以了解如何处理字符串。

但是,使用来自MySQLi库的参数化查询而不是转义是一个更好的主意;以前在转义例程中存在一些bug,并且可能会再次出现一些错误。参数化查询要困难得多,所以不太可能受到MySQL错误的影响。

用户回答回答于

mysql_escape_string不是反对从5.3,但对4.3.0及以上。因此,任何使用以上/或4.3.0 PHP版本的用户都应该使用mysql_real_escape_string

如果使用php < 4.3.0,而不是让你magic_quotes_gpc active虽然建议更新php.ini,但是如果您的代码有问题,请确保使用,magic_quotes_gpcaddslash功能而不是mysql_escape_string

扫码关注云+社区