0

我正在处理这段代码,我正在使用一个简单的插入语句,但我无法弄清楚它为什么不起作用。如果有人能看到我做错了什么,请告诉我。谢谢!这是我得到的错误:

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 'long,comments) 
VALUES (2 ,2012-11-18 21:25:30, 39.3436984, -76.5856958, hh)' at line 1

这是代码:

 mysql_query ("INSERT INTO incidents (emergency_type,date_time,lat,long,comments)  
VALUES  (2 ,$catchDate, $catchLat, $catchLong, $catchDescription)") or die(mysql_error());   
 echo"<br /> Data inserted";
4

3 回答 3

2

Long 是保留字,请尝试用反引号括起来的 `long`。

参考https://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

快速浏览文档会发现您应该研究PDO::preparePDO::execute来执行此操作。您当前的方法似乎容易受到 SQL 注入的影响。

我不是 PHP 程序员,但类似:

$db = get a db handle from somewhere
$st = $db->prepare('Insert Into Incidents (emergency_type, date_time, lat, `long`, comments) Values (?, ?, ?, ?, ?)');
$st->execute(array(2 ,$catchDate, $catchLat, $catchLong, $catchDescription));
于 2012-11-18T21:51:53.457 回答
0
INSERT INTO incidents (emergency_type,date_time,lat,`long`,comments)  
VALUES  (2 ,$catchDate, $catchLat, $catchLong, '$catchDescription')

LONG位于MySQL 保留关键字列表中。用反引号转义它。

还有一件事,date_timeand的值comments 必须用单引号括起来,因为它们不是数字。

并且您的查询现在很容易受到攻击SQL Injection,请花点时间阅读下面的文章

于 2012-11-18T21:47:16.670 回答
0

LONG 是 mysql 中的关键字/保留字。您可以使用反引号来逃避它

INSERT INTO incidents (emergency_type,date_time,lat,`long`,comments)

或将您的表列名称更改为longitude

于 2012-11-18T21:54:15.503 回答