1

我从 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

这是代码:

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);
}
4

1 回答 1

6

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

INSERT INTO licence (`key`,time) VALUES ('$key','$days')

作为旁注,SQL Injection如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-03-28T12:50:02.777 回答