开发者社区> 问答> 正文

mysql_real_escape_string VS加上斜线?mysql

有人可以从PHP手册中了解这两个函数之间的区别吗?

addslashes:返回一个字符串,在数据库查询等中需要加引号的字符之前带有反斜杠。这些字符是单引号('),双引号(“),反斜杠()和NUL(空字节)。

mysql_real_escape_string:mysql_real_escape_string()调用MySQL的库函数mysql_real_escape_string,该函数将反斜杠附加到以下字符:\ x00,\ n,\ r,\,','和\ x1a。

从我收集到的主要区别是\ x00,\ n \ r \ x1a不会引起冲突,您能告诉我它的意义是什么吗?

谢谢

展开
收起
保持可爱mmm 2020-05-17 13:52:22 529 0
1 条回答
写回答
取消 提交回答
  • 您引用的内容可能来自文档,但据我所知不一定是正确的。

    addslashes在通常令人不安的字符上添加斜杠。mysql_real_escape_string转义MySQL需要转义的所有内容。这可能比addslashes需要照顾的字符更多或更少。

    同样,mysql_real_escape_string也不一定会添加斜杠来进行转义。尽管我认为这样做是可行的,但最新版本的MySQL通过将两个引号放在一起而不是在其前面加上斜线来转义引号。

    我认为您应该始终使用数据提供程序的转义功能而不是addslashes,因为addslashes可能会执行过多或不足的工作以达到使用目的。另一方面,mysql_real_escape_string 知道如何做准备将字符串嵌入查询中的字符串。即使规范更改了如何转义的内容,并且突然之间您不再使用反斜杠,您的代码仍然可以正常工作,因为您mysql_real_escape_string会意识到这一点。来源:stack overflow

    2020-05-17 14:02:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像