MySQL:“SQL语法中的错误......靠近键......”?

时间:2012-05-25 23:21:49

标签: php mysql syntax-error

我找到了一个非常酷的脚本来丢失密码,但这一行让我遇到了问题

$r = mysql_query('INSERT INTO `keys` (username,key, vreme) VALUES ("'.$user.'", "'.$acckey.'", "'.$keyexp.'"') or die(mysql_error());

错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key, vreme) VALUES ("123123", "1ed2f5100a26298a55b2935cbea7d4a0", "1337991670"' at line 1

6 个答案:

答案 0 :(得分:10)

KEYReserved Word。正如Schema Object Names所述:

  

如果标识符包含特殊字符或是保留字,那么只要您引用它,就必须引用它。 (例外:在限定名称中的句点后面的保留字必须是标识符,因此不需要引用它。)

[ deletia ]
     

标识符引号字符是反引号(“`”):

mysql> SELECT * FROM `select` WHERE `select`.id > 100;
     

如果启用了ANSI_QUOTES SQL模式,也允许在双引号内引用标识符:

     

mysql> CREATE TABLE "test" (col INT);
ERROR 1064: You have an error in your SQL syntax...
mysql> SET sql_mode='ANSI_QUOTES';
mysql> CREATE TABLE "test" (col INT);
Query OK, 0 rows affected (0.00 sec)

因此:

mysql_query("INSERT INTO `keys` (username, `key`, vreme) VALUES ('$user', '$acckey', '$keyexp') ")

答案 1 :(得分:5)

key是一个reserved keyword - 用反引号将其括起来

`key`

答案 2 :(得分:2)

 $r = mysql_query("INSERT INTO `keys` (username,`key`,vreme) VALUES ('$user', '$acckey','$keyexp')") or die(mysql_error());

谢谢大家(:

答案 3 :(得分:1)

还删除查询中的双引号,并将查询封装在double而不是单引号中。

在查询中使用单引号来封装值。

答案 4 :(得分:1)

$r = mysql_query("INSERT INTO `keys` (username,key,vreme) VALUES ('".$user."', '".$acckey."','".$keyexp."')") or die(mysql_error());

答案 5 :(得分:1)

在查询结尾处是否遗漏了最后一个右括号和分号之间的单引号?