MySQL错误:您的SQL语法中有错误

1n9*_*7om 1 php mysql sql sql-insert

我从mySQL收到此错误消息:

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,time) 
VALUES ('FreeTest','86400')' at line 2
Run Code Online (Sandbox Code Playgroud)

这是代码:

if ((isset($_POST['key'])) && (isset($_POST['days']))) {

  $key = mysql_escape_string($_POST['key']);
  $days = mysql_escape_string($_POST['days'] * 86400);

  $add = "INSERT INTO licence
  (key,time)
  VALUES
  ('$key','$days')";

  $addkey = mysql_query($add);
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 6

名为列的列KEY,它是列名之一,恰好是一个保留关键字,你需要使用反引号转义,这样你就不会得到语法错误,TIME也是一个保留的keyowrd,但是mysql允许它在没有反引号的情况下使用.

INSERT INTO licence (`key`,time) VALUES ('$key','$days')
Run Code Online (Sandbox Code Playgroud)

作为一个旁注,查询是脆弱的SQL Injection,如果值(小号变量)从外面走了进来.请查看下面的文章,了解如何防止它.通过使用,PreparedStatements您可以摆脱使用值周围的单引号.