为什么我的代码给了我一个SQL错误

时间:2013-05-31 15:31:12

标签: php mysql sql

我的以下SQL代码显示错误。 phpMyAdmin中显示的错误消息是

  

#1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在'long = -6.52607,lat = 54.10046,reg ='Rge info ere',info ='general information here'第1行附近使用正确的语法

当我使用phpmyadmin直接插入它们时,long和lat工作正常,但现在执行sql查询时。这两个字段设置为float。我已经厌倦了他们使用和不使用单引号。

INSERT INTO events SET 
  name = 'Home Event', 
  url = 'home-event', 
  eventDate = '2013-06-29', 
  address1 = '18 Daly Park', 
  address2 = 'Silverbridge', 
  city = 'Newry', 
  county = 'Down', 
  postcode = 'BT35 9PJ', 
  long = -6.52607, 
  lat = 54.10046, 
  reg = 'Rge info ere', 
  info = 'general info here', 
  contact = 'contact me', 
  image = ''

3 个答案:

答案 0 :(得分:6)

你正在使用一个mysql保留的关键字long,你需要在带有反引号的查询中将其转义,让它理解它是column name

`long` = -6.52607,

查看documentation here

关于mysql reserved keyword的附注,我想补充说,您可以通过提供表别名然后在其前使用alias.列名称来避免转义它们。实际上INSERT查询不支持表别名,因此您无法在此特定情况下使用。

答案 1 :(得分:5)

如果您尝试google错误消息,LONG是MySQL中的保留关键字。

你有两种选择让它发挥作用,

一,用反引号包装列名,

`long` = -6.52607

或两个,更改列名称,以便错误不会再返回。

您可以在此处找到所有关键字的列表:MySQL Reserved Keywords List

答案 2 :(得分:3)

long是一个关键词,你应该通过SQL

转义和引用你的文本

将长期改为“长”

`long` = -6.52607,