简单插入语句的问题

时间:2012-11-18 21:45:26

标签: mysql sql

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

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";

3 个答案:

答案 0 :(得分:2)

Long是一个保留词,试着用反引号包围“long”。

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

快速浏览文档会发现您应该调查PDO::preparePDO::execute来执行此操作。您当前的方法似乎容易受到SQL注入的攻击。<​​/ p>

我不是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));

答案 1 :(得分:0)

INSERT INTO incidents (emergency_type,date_time,lat,`long`,comments)  
VALUES  (2 ,$catchDate, $catchLat, $catchLong, '$catchDescription')

LONG位于MySQL Reserved Keywords列表中。用反引号转义它。

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

您的查询现在容易被SQL Injection攻击,请花点时间阅读以下文章

答案 2 :(得分:0)

mysql中的

LONG is a keyword/reserved word。你可以使用反引号来逃避它

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

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