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
浙公网安备 33010602011771号