&引用;插入。。。“关于重复密钥更新”;查询在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
是不可能的。继续开卡车