INSERT INTO不能正常运行

时间:2013-04-15 16:25:56

标签: php html mysql insert

我的插入行有错误,这是关于这个坏男孩的

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,'在第1行

我怀疑它与未被正确调用的变量有关?

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

您不必在查询中使用引号',而是反复添加“

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以获取新项目。

答案 2 :(得分: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());
祝你好运

答案 3 :(得分: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