mysql_escape_string VS mysql_real_escape_string
所以这是我们大家应该知道的事情,当我第一次看到它的时候,在我的脑海里玩了起来。
我知道mysql_escape_string
从5.3弃用,但是mysql_real_escape_string
的实际区别是什么。
我认为mysql_real_escape_string
与mysql_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_gpc
和addslash
函数,而不是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
扩展