所以这是我们所有人都应该知道的事情,当我第一次看到它的时候,我的脑海里就浮现出了这一点。
我知道5.3版本不推荐使用mysql_escape_string
,但是mysql_real_escape_string
的实际区别是什么呢?
我认为mysql_real_escape_string
和mysql_escape_string
是完全相同的,除了mysql_real_escape_string
使用了第二个参数作为mysql资源。
因此,我粗暴地认为,在如何处理字符串方面肯定有一些不同,因为不需要两个函数。
因此,我认为区别纯粹在于区域设置和字符编码。?
有人能帮我把这事说清楚吗?
发布于 2010-09-08 15:51:06
不同之处在于,mysql_escape_string
只将字符串视为原始字节,并在它认为合适的地方添加转义。
另一方面,mysql_real_escape_string
使用有关用于MySQL连接的字符集的信息。这意味着在正确处理多字节字符的同时对字符串进行转义;也就是说,它不会在字符中间插入转义字符。这就是为什么需要为mysql_real_escape_string
建立连接的原因;为了知道应该如何处理字符串,它是必要的。
但是,与转义相比,使用来自MySQLi库的参数化查询更好;以前在转义例程中存在错误,并且可能会再次出现一些错误。参数化查询很难搞砸,所以不太可能受到MySQL错误的影响。
发布于 2011-08-29 18:48:53
对于4.3.0及更高版本,从5.3开始不推荐使用mysql_escape_string
。所以任何使用PHP4.3.0或以上版本的用户都应该使用mysql_real_escape_string
。
如果使用php < 4.3.0
,那么让你的magic_quotes_gpc active
从php.ini开始,虽然建议更新,但如果你的代码会有问题,请确保你使用的是magic_quotes_gpc
和addslash
函数,而不是mysql_escape_string
。
https://stackoverflow.com/questions/3665572
复制相似问题