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资源。

所以后来我觉得很好,在处理string方面肯定有一些区别,因为不需要2个函数。

所以我认为这种区别纯粹是由于语言环境和字符编码。 ?

任何人都可以为我清除这个?

区别在于mysql_escape_string只是将string视为原始字节,并在其认为合适的地方添加了转义。

另一方面, mysql_real_escape_string使用有关用于MySQL连接的字符集的信息。 这意味着string在处理多字节字符时被转义; 即不会在字符中插入转义字符。 这就是为什么你需要连接mysql_real_escape_string ; 有必要知道如何处理string。

但是,不使用转义,使用MySQLi库中的参数化查询是个好主意。 在逃跑例程中以前有过错误,有些可能会再次出现。 参数化查询要困难得多,所以不太可能因为MySQL错误而受到威胁。

mysql_escape_string不能从5.3中弃用,4.3.0或更高版本 所以任何使用PHP版本4.3.0以上的版本都应该使用mysql_real_escape_string

如果使用php < 4.3.0 ,比使magic_quotes_gpc active ,虽然build议更新,但是如果你的代码有问题,请确保使用magic_quotes_gpcaddslash函数,而不是mysql_escape_string

那么…是的。 它考虑了MySQL连接的字符集。

http://php.net/mysql_escape_string

这个函数和mysql_real_escape_string()是一样的,除了mysql_real_escape_string()需要一个连接处理函数并且根据当前字符集转义string。 mysql_escape_string()不接受连接参数,不考虑当前的字符集设置。

现在这两个函数都被弃用了

PHP 4> = 4.3.0和PHP 5.他们推荐使用PDO_MySQL扩展