我很抱歉提出这样一个基本问题,但我不能在这里发现错误,因为我可以看到一切都是正确的。然而我得到了错误,也许我需要一双新眼睛来看看
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近' WHERE event_id =' 1243''在INSERT INTO expiredEvents的第1行 (event_id的,sport_type,锦标赛,圆形,TEAM1,TEAM2,地点,EVENT_DATE) 价值观(' 1243',' Rugby'' Super15'' 3',' Waratahs',' ;鲨鱼','安联 体育场',')WHERE event_id =' 1243'
false
答案 0 :(得分:1)
INSERT
statement的正确语法中没有WHERE
子句。
根据您要实现的目标,选择以下选项之一。
event_id
的行,则不要打扰INSERT INTO expiredEvents
(event_id, sport_type, tournament, round, team1, team2, venue, event_date)
VALUES
('$id', '$sport', '$trnmnt', '$rnd', '$t1', '$t2', '$ven', '$eDate')
如果event_id
是表UNIQUE INDEX
的{{1}},则如果已存在expiredEvents
的其他记录,此查询将失败。
假设event_id = '$id'
是表格的event_id
,请继续阅读。
PK
INSERT IGNORE INTO expiredEvents
(event_id, sport_type, tournament, round, team1, team2, venue, event_date)
VALUES
('$id', '$sport', '$trnmnt', '$rnd', '$t1', '$t2', '$ven', '$eDate')
关键字将错误转换为警告,并且查询成功完成,但如果另一个已经存在IGNORE
,则不会插入该行。
event_id = '$id'
如果该行不存在,则此查询使用INSERT INTO expiredEvents
(event_id, sport_type, tournament, round, team1, team2, venue, event_date)
VALUES
('$id', '$sport', '$trnmnt', '$rnd', '$t1', '$t2', '$ven', '$eDate')
ON DUPLICATE KEY UPDATE
sport_type=VALUES(sport_type), round=round+1, event_date=NOW()
子句中的值插入它。如果该行已存在,则它使用ON DUPLICATE KEY UPDATE
知道如何更新它。此查询中修改了三个字段:
VALUES
- 列sport_type=VALUES(sport_type)
的值使用列sport_type
(sport_type
的查询中提供的值VALUES(sport_type)
)更新; '$sport'
- 使用当前值加1(round=VALUES(round)+1
)更新列round
的值;不使用round+1
子句中提供的值; VALUES
- 使用函数event_date=NOW()
返回的值修改列event_date
的值;旧值和查询的NOW()
子句中提供的值都将被忽略。这只是一个例子,你可以放置更新现有行所需的任何表达式。
VALUES
REPLACE
statement是SQL标准的MySQL扩展。首先REPLACE INTO expiredEvents
(event_id, sport_type, tournament, round, team1, team2, venue, event_date)
VALUES
('$id', '$sport', '$trnmnt', '$rnd', '$t1', '$t2', '$ven', '$eDate')
行DELETE
(如果有),然后event_id = '$id'
是新行。它在功能上等同于INSERT
,后面是此答案中上面公开的第一个查询。
答案 1 :(得分:0)
INSERT INTO / VALUES中不允许使用WHERE关键字 http://dev.mysql.com/doc/refman/5.6/en/insert.html
详细说明你想要完成的事情。
答案 2 :(得分:0)
不要在insert statment中使用where,而只是从包含确切记录的相应表中获取数据,并通过在该查询的select语句中添加条件来单独插入必要的行。 这是解决错误的简单方法,
$sql="INSERT INTO expiredEvents
(event_id,sport_type,tournament,round,team1,team2,venue,event_date)
SELECT event_id,sport_type,tournament,round,team1,team2,venue,event_date from events WHERE event_id = '$id'"