用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > mysql教程

mysql_real_escape_string和addslashes的区别

时间:2015-01-23  来源:西部数据  作者:西部数据

本文章详细的以实例和php手册详细的介绍了关于mysql_real_escape_string和addslashes的区别.

说明:string mysql_real_escape_string(string $unescaped_string[,resource $link_identifier ]).

本函数将特殊字符转义,并计及连接的当前字符集,因此可以安全用于mysql_query().

Note:mysql_real_escape_string()并不转义.

Example #1 mysql_real_escape_string() 例子,代码如下:

  1. <?php 
  2. $item = "Zak’s and Derick’s Laptop"
  3. $escaped_item = mysql_real_escape_string($item); 
  4. printf ("Escaped string: %sn"$escaped_item); 
  5. ?>  
  6.  
  7. //以上例子将产生如下输出: 
  8. //phpfensi.com 
  9. Escaped string: Zak’s and Derick’s Laptop 

参见:mysql_escape_string() 和 mysql_character_set_name().

网站分享的关于 addslashes与mysql_real_escape_string的区别.代码如下:

  1. if (!get_magic_quotes_gpc()) {  
  2. $lastname = addslashes($_POST[‘lastname’]);  
  3. else {  
  4. $lastname = $_POST[‘lastname’];  

最好对magic_quotes_gpc已经开放的情况下,还是对$_POST[’lastname’]进行检查一下,再说下mysql_real_escape_string和mysql_escape_string这2个函数的区别: 

mysql_real_escape_string 必须在(PHP 4 >= 4.3.0, PHP 5)的情况下才能使用,否则只能用 mysql_escape_string,两者的区别是:

mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑.

手册上addslashes转义的字符是单引号(')、双引号(")、反斜线()与NUL(NULL 字符)。

mysql_real_escape_string转义的字符并没有被提到.只是说了一句.

注意:mysql_real_escape_string() 并不转义% 和_。

为什么PHP手册没有说呢?因为其实这是个MySql的C的API.所以我们需要查下MySql手册..上面是这么说的.

编码的字符为NUL (ASCII 0)、'n'、'r'、''、'''、'"'、以及Control-Z(请参见9.1节,“文字值”)。(严格地讲,MySQL仅需要反斜杠和引号字符,用于引用转义查询中的字符串。该函数能引用其他字符,从而使得它们在日志文件中具有更好的可读性)。

总结:

* addslashes() 是强行加; 

* mysql_real_escape_string()  会判断字符集,但是对PHP版本有要求; 

* mysql_escape_string不考虑连接的当前字符集。

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
    无相关信息
栏目更新
栏目热门