mysql_escape_string VS mysql_real_escape_string

2022-08-30 09:36:19

我知道从5.3开始弃用,但是中的实际区别是什么。mysql_escape_stringmysql_real_escape_string

我的想法是,这与除了为mysql资源取第二个参数完全相同。mysql_real_escape_stringmysql_escape_stringmysql_real_escape_string

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

所以后来我认为区别纯粹取决于区域设置和字符编码?


答案 1

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

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

但是,与其转义,不如使用MySQLi库中的参数化查询。以前在转义例程中存在错误,并且可能会再次出现一些错误。参数化查询要难搞砸得多,因此您不太可能受到MySQL错误的影响。


答案 2

井。。。差不多吧,是的。它考虑了MySQL连接的字符集。

http://php.net/mysql_escape_string

此函数与采用连接处理程序并根据当前字符集转义字符串相同。 不采用连接参数,也不遵循当前字符集设置。mysql_real_escape_string()mysql_real_escape_string()mysql_escape_string()


推荐