INSERT INTO和INSERT IGNORE始终会生成查询(1064):语法错误

时间:2018-10-25 23:27:34

标签: mysql pdo

INSERT IGNORE INTO `criticaldates`(`ID`, `LeaseID`, `CriticalDate`, `Note`, `AddedToOutlook`) 
VALUES(39, 61, '2018-09-01 00:00:00', 'No Notes', 1) 
WHERE `ID`=39;
Error in query (1064): Syntax error near 'WHERE `ID`=39' at line 3

也尝试过:

INSERT INTO `criticaldates`(`ID`, `LeaseID`, `CriticalDate`, `Note`, `AddedToOutlook`) 
VALUES(39, 61, '2018-09-01 00:00:00', 'No Notes', 1) 
WHERE `ID`=39 
ON DUPLICATE KEY UPDATE `ID` = `ID`+0, `LeaseID`=`LeaseID`+0;
Error in query (1064): Syntax error near 'WHERE `ID`=39 ON DUPLICATE KEY UPDATE `ID` = `ID`+0, `LeaseID`=`LeaseID`+0' at line 3

我一直在努力解决这个问题,以免运气不佳。我正在使用PHP PDO和MySQL-但尝试使用命名占位符来做到这一点我认为我可能会隔离问题并对其进行“硬编码” 直接在phpMyAdmin SQL命令屏幕中进行查询,然后直接对有问题的数据库表运行它。我认为这可能会有所帮助,但仍然会出现相同的错误。 我到底在做什么错了?

  • ID是主键和自动递增
  • 已为LeaseID编制索引

没有外键约束-问题始终指向“ WHERE”行,但是我看不到为什么? 我故意将查询拆分为避免使用单行时出现“在第1行”的问题。这有所帮助,因为它使用“ WHERE”子句来指出问题。 我不希望或不需要更新ID或LeaseID,我只是一个;最好两个都在“ where”子句中,这样我就可以将表中的正确记录作为目标。 我已经检查以确保我不使用Mysql保留字[Here](我认为ive正确),这似乎是1064错误的常见原因。

如果我从绑定中删除了ID和LeaseID,因此它们不在列列表中,则说明参数数量错误,我认为cos在WHERE子句中引用了ID。

任何想法在这里发生了什么-即时通讯陷入困境,并把我推向高处!!

0 个答案:

没有答案