-3

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

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 附近使用正确的语法

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

4

4 回答 4

4

有各种各样的问题,所以我将它们总结一下:

  • INSERT INTO t1 ('col'-- 注意'col'用引号括起来。这意味着它试图插入字符串文字“col1”而不是列名。删除引号并用反引号替换它们(或什么都没有)
  • 值本身不包含在引号中。你有VALUES(test——这在语义上意味着插入列“test”的值,这是没有意义的。您实际上需要用引号括起来。
  • 我冒昧地猜测没有任何输入参数被正确转义。您应该对 PDO 或 mysqli 使用正确的参数化查询。
于 2013-04-15T16:29:12.213 回答
0

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

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

祝你好运

于 2013-04-15T16:29:15.307 回答
0

您不必'在查询中使用引号但反引号`

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

插入文档

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

于 2013-04-15T16:29:28.137 回答
0

不推荐使用 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

于 2013-04-15T16:32:14.123 回答