&引用;插入。。。“关于重复密钥更新”;查询在phpmyadmin上工作,但在PDO中不工作

&引用;插入。。。“关于重复密钥更新”;查询在phpmyadmin上工作,但在PDO中不工作,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我看过类似的帖子,但没有一个答案对我有帮助。。。我有这张桌子: CREATE TABLE IF NOT EXISTS `user_likes_name` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_user` int(11) NOT NULL, `id_name` int(11) NOT NULL, `like` enum('yes','no','ask_later') NOT NULL, `date` datetime NOT N

我看过类似的帖子,但没有一个答案对我有帮助。。。我有这张桌子:

CREATE TABLE IF NOT EXISTS `user_likes_name` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_user` int(11) NOT NULL,
  `id_name` int(11) NOT NULL,
  `like` enum('yes','no','ask_later') NOT NULL,
  `date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `provenance` enum('elimination','selection','suggestion') NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `avis_user` (`id_user`,`id_name`),
  KEY `id_user` (`id_user`,`id_name`)
)
我使用这个查询:

INSERT INTO user_likes_name (id_user, id_name, `like`)
VALUES (?, ?, 'ask_later')
ON DUPLICATE KEY UPDATE `date` = current_timestamp
它在phpmyadmin上运行良好。

但是当我在代码中使用它(与PDO一起)时,我会收到以下错误消息:

致命错误:未捕获的异常“PDOException”带有消息 'SQLSTATE[23000]:完整性约束冲突:1062 du champ'99-869'pour la clef'avis_user''在C:\fakepath.php的第95行

我的PHP代码是:

$req = $bdd->prepare("
    INSERT INTO user_likes_name (id_user, id_name, `like`)
    VALUES (?, ?, 'ask_later')
    ON DUPLICATE KEY UPDATE `date` = current_timestamp");
$req->execute(array($foo, $bar));

我觉得我要走了。是吗?

两个小时的工作之后,我意识到我实际上没有处理正确的文件。很难夸大我现在的疲惫感。

错误消息应该会告诉您问题所在。看起来您正在尝试插入违反唯一密钥的数据。发布您的模式和正在插入的数据示例。但是您应该对照表中的数据检查插入的数据。可能是重复的错误似乎很清楚,您不明白什么?为什么您有相同条件的
UNIQUE KEY`avis\u user`
KEY`id\u user`
?有可能是由于双键的缘故,
->prepare()
遇到了完整性约束,而在phpmyadmintry中,用
current\u timestamp()
NOW()
替换
current\u timestamp
是不可能的。继续开卡车