【问题标题】:INSERT INTO not functioning as shouldINSERT INTO 不能正常工作
【发布时间】:2013-04-15 16:25:56
【问题描述】:

我在插入行时出错,是关于这个坏男孩的

mysql_query("INSERT INTO accounts('username', 'password', 'firstname', 'lastname', 'email') 
VALUES($username, $password, $firstname, $lastname, $email)") 
or die("Could not create account! <br/>" . mysql_error());

我收到的错误如下:

无法创建帐户!
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 ''username'、'password'、'firstname'、'lastname'、'email') VALUES(test, test,' at line 1 附近使用正确的语法

我怀疑这与未正确调用变量有关?

【问题讨论】:

  • 请尽快阅读有关此问题的其他 37489379 个答案之一。
  • 您需要用单引号引用您添加的值。 '$username',等等。尽管您可能还想考虑使用 PDO 并将其制成一个准备好的语句,因为它更容易编写并且更安全。
  • 你不要像accounts(...)之后那样引用列名
  • mysql_* 函数不被认为是一种不好的做法吗?

标签: php html mysql insert


【解决方案1】:

问题有很多种,我总结一下:

  • INSERT INTO t1 ('col' -- 请注意 'col' 用引号括起来。这意味着它试图插入字符串文字“col1”而不是列名。删除引号并将它们替换为反引号(或不替换)
  • 值本身没有用引号括起来。你有VALUES(test——这在语义上意味着插入列“test”的值,这是没有意义的。您实际上需要用引号括起来。
  • 我敢猜测没有一个输入参数被正确转义。您应该使用带有 PDO 或 mysqli 的正确参数化查询。

【讨论】:

  • 我正在输入一个答案,但你打败了我。 OP的主要问题是错误位置的引号。解决方案是忘记“mysql_query()”,而是使用 PDO 或 [mysqli] 和准备好的语句。
【解决方案2】:

我的朋友,查询中的字段不应该被引用。试试这个:

mysql_query("INSERT INTO accounts (username, password, firstname, lastname, email) VALUES($username, $password, $firstname, $lastname, $email)") or die("Could not create account!" . mysql_error());

祝你好运

【讨论】:

    【解决方案3】:

    您不必在查询中使用引号',而是使用反引号`

    mysql_query("INSERT INTO `accounts` (`username`, `password`, `firstname`, `lastname`, `email`) VALUES('".$username."', '".$password."','". $firstname."', '".$lastname."', '".$email."')") or die("Could not create account! " . mysql_error())
    

    insert into documentation

    我还想提醒您,mysql_ 函数已被弃用,因此我建议您切换到 mysqliPDO 进行新项目。

    【讨论】:

      【解决方案4】:

      不推荐使用mysql_query,很快就会被弃用。可能最好使用 PDO 或 mysqli 代替。 http://php.net/manual/en/function.mysql-query.php

      但要回答您的问题,我相信这是因为您的列名是单引号(而不是反引号)。

      您的 需要包含在单引号内。您可能还想在这些变量上运行 mysql_real_escape_string,以防止 SQL 注入。或者只使用 PDO 准备好的语句。 http://php.net/manual/en/pdo.prepared-statements.php

      【讨论】:

        猜你喜欢
        • 2016-04-18
        • 2014-03-17
        • 2012-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-25
        • 2018-05-16
        相关资源
        最近更新 更多