mysql_escape_string VS mysql_real_escape_string

新手上路,请多包涵

我知道 mysql_escape_string 已从 5.3 中弃用,但 mysql_real_escape_string 的实际区别是什么。

我认为 mysql_real_escape_stringmysql_escape_string 完全相同,除了 mysql_real_escape_string 为 mysql 资源采用第二个参数。

因此,我认为在处理字符串方面肯定存在一些差异,因为不需要 2 个函数。

那么我认为区别纯粹在于语言环境和字符编码?

原文由 RobertPitt 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 651
2 个回答

不同之处在于 mysql_escape_string 只是将字符串视为原始字节,并在它认为合适的地方添加转义。

mysql_real_escape_string 另一方面,使用有关用于 MySQL 连接的字符集的信息。这意味着在正确处理多字节字符的同时对字符串进行了转义;即,它不会在字符中间插入转义字符。这就是为什么您需要连接 mysql_real_escape_string 的原因;为了知道应该如何处理字符串是必要的。

但是,与其转义,不如使用 MySQLi 库中的参数化查询更好;以前在转义例程中存在错误,并且有可能再次出现一些错误。参数化查询更难搞砸,因此您不太可能被 MySQL 错误破坏。

原文由 Michael Madsen 发布,翻译遵循 CC BY-SA 2.5 许可协议

mysql_escape_string 未从 5.3 中弃用,但对于 4.3.0 及更高版本。因此,任何使用 PHP 版本以上/或 4.3.0 的人都应该使用 mysql_real_escape_string

如果使用 php < 4.3.0 ,而不是从 php.ini 制作你的 magic_quotes_gpc active 虽然建议更新,但如果你的代码有问题而不是确保你使用, magic_quotes_gpcaddslash 函数而不是 mysql_escape_string

原文由 Rocky Sharma 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题