飞龙再生

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  addslashes 和 mysql_real_escape_string 都是为了使数据安全的插入到数据库中而进行过滤,那么这两个函数到底是有什么区别呢??

    从 PHP手册 上看 addslashes 转义的字符是 单引号(')、双引号(")、反斜线(\)与 NUL( NULL 字符),而 mysql_real_escape_string 转义的字符并没有被提到。

    为什么 PHP手册 没有说呢?因为其实 mysql_real_escape_string 是 MySql 的 C 的 API,从 MySql手册 可知:转义的字符包含了 addslashes 的 单引号(')、双引号(")、反斜线(\)与 NUL ( ASCII 0)、另外还有 '\n'、'\r' 以及Control-Z。

    不过严格地讲,MySQL仅需要转义  单引号(')、双引号(")、反斜线(\)。这个函数引用其他字符,其实是为了增强它们在日志文件中的可读性,还有一点很重要就是 mysql_real_escape_string 必须连接数据库之后才能使用。

    到这里都应该知道为什么那么多开源的程序比如Discuz用 addslashes 而不用 mysql_real_escape_string 了吧.

所以呢,以后也就用addslashes好了,暂时可以忘记掉 mysql_real_escape_string 了

参考:http://www.cnblogs.com/suihui/archive/2012/09/20/2694751.html

posted on 2015-08-31 17:57  飞龙再生  阅读(89)  评论(0)    收藏  举报