参考:
http://hi.baidu.com/catro/blog/item/c9e153e7e40f2f24b9382092.html
http://hi.baidu.com/devel83/blog/item/c367e781f026308af603a6d2.html
http://hi.baidu.com/nathena/blog/item/498655137ec83bd7f6039e06.html
从PHP手册入手..
手册上addslashes转义的字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。
mysql_real_escape_string转义的字符并没有被提到.只是说了一句
注意: mysql_real_escape_string() 并不转义 % 和 _
直接调用了MySql的C的API.mysql_real_escape_string()..
需要注意的是.这个函数在调用mysql_real_escape_string这个API之前.先是判断了是否连接上了数据库
CHECK_LINK(id); //就是这句
所以这就意味着mysql_real_escape_string必须是连接数据库之后才能使用
以后也就用addslashes好了..暂时可以忘记掉mysql_real_escape_string了
-------------------------
总结一下:
addslashes() 是强行加;
mysql_escape_string不考虑连接的当前字符集。
mysql_real_escape_string()会判断字符集,但是对PHP版本有要求;函数用于转义SQL语句中的特殊字符,这个方法必须在连接数据库之后才能使用。