我正在处理这段代码,我正在使用一个简单的插入语句,我无法弄清楚为什么它不起作用。如果有人能看到我做错了什么,请告诉我。谢谢! 这是我得到的错误:
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";
答案 0 :(得分:2)
Long是一个保留词,试着用反引号包围“long”。
参考https://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
快速浏览文档会发现您应该调查PDO::prepare和PDO::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_time
和comments
的值必须用单引号括起来,因为它们不是数字。
您的查询现在容易被SQL Injection
攻击,请花点时间阅读以下文章
答案 2 :(得分:0)
LONG is a keyword/reserved word。你可以使用反引号来逃避它
INSERT INTO incidents (emergency_type,date_time,lat,`long`,comments)
或将您的表格列名更改为longitude