首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >mysql_escape_string VS mysql_real_escape_string

mysql_escape_string VS mysql_real_escape_string
EN

Stack Overflow用户
提问于 2010-09-08 15:42:40
回答 2查看 68.1K关注 0票数 59

所以这是我们所有人都应该知道的事情,当我第一次看到它的时候,我的脑海里就浮现出了这一点。

我知道5.3版本不推荐使用mysql_escape_string,但是mysql_real_escape_string的实际区别是什么呢?

我认为mysql_real_escape_stringmysql_escape_string是完全相同的,除了mysql_real_escape_string使用了第二个参数作为mysql资源。

因此,我粗暴地认为,在如何处理字符串方面肯定有一些不同,因为不需要两个函数。

因此,我认为区别纯粹在于区域设置和字符编码。?

有人能帮我把这事说清楚吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-08 15:51:06

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

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

但是,与转义相比,使用来自MySQLi库的参数化查询更好;以前在转义例程中存在错误,并且可能会再次出现一些错误。参数化查询很难搞砸,所以不太可能受到MySQL错误的影响。

票数 91
EN

Stack Overflow用户

发布于 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_gpcaddslash函数,而不是mysql_escape_string

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3665572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档