我知道 mysql_escape_string
已从 5.3 中弃用,但 mysql_real_escape_string
的实际区别是什么。
我认为 mysql_real_escape_string
与 mysql_escape_string
完全相同,除了 mysql_real_escape_string
为 mysql 资源采用第二个参数。
因此,我认为在处理字符串方面肯定存在一些差异,因为不需要 2 个函数。
那么我认为区别纯粹在于语言环境和字符编码?
原文由 RobertPitt 发布,翻译遵循 CC BY-SA 4.0 许可协议
不同之处在于
mysql_escape_string
只是将字符串视为原始字节,并在它认为合适的地方添加转义。mysql_real_escape_string
另一方面,使用有关用于 MySQL 连接的字符集的信息。这意味着在正确处理多字节字符的同时对字符串进行了转义;即,它不会在字符中间插入转义字符。这就是为什么您需要连接mysql_real_escape_string
的原因;为了知道应该如何处理字符串是必要的。但是,与其转义,不如使用 MySQLi 库中的参数化查询更好;以前在转义例程中存在错误,并且有可能再次出现一些错误。参数化查询更难搞砸,因此您不太可能被 MySQL 错误破坏。