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

关于“”的php-mysql查询语法问题

  •  1
  • Drew  · 技术社区  · 16 年前

    $query = "INSERT INTO scenario_needgames VALUES ("$id", "Battle of the Bulge")";
    

    $query = "INSERT INTO scenario_needgames VALUES (\"$id\" , \"Battle of the Bulge\");";
    

    但我很困惑,为什么引号实际上是查询语法的一部分,而不是标题或字符串的一部分时,需要转义?我正在学习的入门书不包括这些简单的字符串。

    如果你好奇的话,$id值是7位数字、4个字母和3个数字。

    非常感谢。

    3 回复  |  直到 16 年前
        1
  •  3
  •   karim79    16 年前

    $query = 'INSERT INTO scenario_needgames VALUES ("' . $id . '", "Battle of the Bulge")';
    

    $query = "INSERT INTO scenario_needgames VALUES ('$id', 'Battle of the Bulge')";
    

    mysql_real_escape_string 正确且安全地引用字符串。您可能还想考虑使用预处理语句,而不是 PDO mysqli .

        2
  •  3
  •   Valentin Golev    16 年前

        3
  •  2
  •   pavium    16 年前

    从PHP的角度来看,字符串是由引号分隔的字符序列。一个在开头,一个在结尾。

    字符串,您需要转义它们,这样PHP就知道内部引号不是字符串的末尾。

    除非你转义它们,否则PHP将返回一个解析错误,因为你正在分配的东西 $query 不是有效的字符串(仅在两端有引号)