代码之家  ›  专栏  ›  技术社区  ›  RobertPitt

mysql\u escape\u string VS mysql\u real\u escape\u string

  •  53
  • RobertPitt  · 技术社区  · 14 年前

    所以这是我们都应该知道的,当我第一次看到它的时候我就想到了。。

    我知道 mysql_escape_string 是从5.3中弃用的,但实际的区别是什么 mysql_real_escape_string

    我想的是 mysql\u real\u escape\u字符串 mysql\u escape\u字符串 除了 mysql\u real\u escape\u字符串

    所以我很生气地想,字符串的处理方式肯定有些不同,因为不需要两个函数。

    所以后来我认为差异完全是由于语言环境和字符编码的不同?

    4 回复  |  直到 13 年前
        1
  •  90
  •   Michael Madsen    14 年前

    不同的是 mysql_escape_string

    mysql_real_escape_string 另一方面,使用有关用于MySQL连接的字符集的信息。这意味着字符串在正确处理多字节字符时被转义;也就是说,它不会在字符中间插入转义字符。这就是为什么你需要一个连接 ;这是必要的,以便知道如何处理字符串。

    但是,与其转义,不如使用MySQLi库中的参数化查询;以前转义例程中存在错误,可能还会出现一些错误。参数化查询很难搞砸,所以不太可能被MySQL错误破坏。

        2
  •  3
  •   deceze    14 年前

    好。。。有点,是的。它考虑了MySQL连接的字符集。

    http://php.net/mysql_escape_string

    此功能与 mysql_real_escape_string() 除了那个 获取连接处理程序并根据当前字符集转义字符串。 mysql_escape_string() 不接受连接参数,也不尊重当前的字符集设置。

        3
  •  3
  •   al45tair Sergey Kalinichenko    9 年前

    mysql_escape_string 不是从5.3中弃用,而是针对4.3.0及更高版本。 因此,任何一个使用PHP版本以上或4.3.0应该使用 mysql_real_escape_string

    php < 4.3.0 ,而不是 magic_quotes_gpc active 从php.ini文件,虽然建议进行更新,但如果您的代码出现问题,请务必使用, magic_quotes_gpc addslash 功能而不是 mysql\u escape\u字符串 .

        4
  •  1
  •   Sourabh Kumar Sharma    9 年前

    PHP 4>=4.3.0和PHP 5。 他们建议使用 PDO_MySQL 延伸