使用'与'值时给出mysql错误

时间:2013-01-14 06:27:55

标签: php mysql sql

我写了一个查询

mysql_query("insert into db_manufacturer(mfgName) values('$manufacturer')"

$manufacturer = ram'ssam's等出现sql错误时,如何克服此错误。如果我使用"",那么在数据库中插入变量而不是变量值。

5 个答案:

答案 0 :(得分:2)

 mysql_query("insert into db_manufacturer(mfgName) values('$manufacturer')")

$manufacturer"ram's"时,它就像

 mysql_query("insert into db_manufacturer(mfgName) values('ram's')")

当关闭分隔符值出现两次时,它会被破坏;也就是说,单引号有奇数。

现在解决方案

mysql_query("
  INSERT INTO db_manufacturer
    (mfgName)
  VALUES
    ('".mysql_real_escape_string($manufacturer)."')
");

一种优秀,简单,可扩展且安全的方法是使用参数化查询。此类查询的参数称为绑定变量。

好读

  1. How to prevent SQL injection in PHP?
  2. Are PDO prepared statements sufficient to prevent SQL injection?

  3. 注意

    1. 整个 ext/mysql PHP扩展程序(提供名为mysql_的所有函数)为officially deprecated as of PHP v5.5.0,将来会被删除。因此,请使用PDOMySQLi
    2. 好读

      1. The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead
      2. PDO Tutorial for MySQL Developers
      3. Pdo Tutorial For Beginners

答案 1 :(得分:1)

$manufacturer = mysql_real_escape_string($manufacturer);
mysql_query("insert into db_manufacturer(mfgName) values('$manufacturer')";

答案 2 :(得分:1)

$manufacturer = mysql_real_escape_string($manufacturer);
mysql_query("insert into db_manufacturer(mfgName) values('$manufacturer')"

但我建议使用PDO或MySQLI。

这是一篇很棒的文章:

答案 3 :(得分:0)

使用mysql_real_escape_string转义字符串中的特殊字符以用于SQL语句

$manufacturer = mysql_real_escape_string($manufacturer);

更多详情:

http://php.net/manual/en/function.mysql-real-escape-string.php

答案 4 :(得分:0)

已弃用,但您正在寻找mysql_real_escape_string

但忘了mysql_并学习PDO,它更安全。