所以这是我们所有人都应该知道的事情,当我第一次看到它时就在我脑海中浮现。
我知道该版本mysql_escape_string从5.3开始弃用,但的实际区别是什么mysql_real_escape_string。
mysql_escape_string
mysql_real_escape_string
我以为那mysql_real_escape_string是完全一样的,mysql_escape_string除了mysql_real_escape_string需要为mysql资源提供第二个参数。
因此,我当时很好地认为,字符串的处理方式一定有所不同,因为不需要2个函数。
因此,我当时认为区别完全在于语言环境和字符编码。?
谁能为我解决这个问题?
不同之处在于,mysql_escape_string仅将字符串视为原始字节,并在认为合适的位置添加了转义。
mysql_real_escape_string另一方面,使用有关用于MySQL连接的字符集的信息。这意味着在正确处理多字节字符的同时对字符串进行了转义。即,它不会在字符中间插入转义字符。这就是为什么需要连接的原因mysql_real_escape_string;有必要知道如何处理字符串。
但是,与其转义,不如使用MySQLi库中的参数化查询,这是一个更好的主意。转义例程中以前存在错误,并且有可能再次出现。参数化查询的难度大得多,因此,MySQL漏洞影响的可能性较小。