gpt4 book ai didi

php - MYSQL 重复键不工作

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:55 25 4
gpt4 key购买 nike

为什么我的 ON DUPLICATE KEY UPDATE 语句不起作用,我正在寻找一种方法让我的表中没有重复项。使用以下代码,我得到了重复项

CMS::insertQuery("INSERT INTO {table} SET canid=?, categoryid=? ON DUPLICATE KEY UPDATE canid=?, categoryid=?", array($emailCheck['id'], $id, $emailCheck['id'], $id));

数据库:

CREATE TABLE `table` (  `canid` int(10) NOT NULL,  `categoryid` int(10) NOT NULL,  UNIQUE KEY `canid` (`canid`,`categoryid`)) ENGINE=MyISAM DEFAULT CHARSET=latin1

我正在尝试运行的当前行:

CMS::insertQuery("INSERT INTO {table} SET canid=?, categoryid=? ON DUPLICATE KEY UPDATE canid=?, categoryid=? WHERE canid=?, categoryid=?", array($emailCheck['id'], $id, $emailCheck['id'], $id,$emailCheck['id'],$id));

最佳答案

这只是一个猜测,因为您没有提供您的架构,但是您的唯一键中的列之一是否可以为空?

编辑:

正如@G-Nugget 在评论中所说,您需要在相关列上使用唯一键:

If you specify ON DUPLICATE KEY UPDATE, and a row is inserted that would cause a duplicate value in a UNIQUE index or PRIMARY KEY, MySQL performs an UPDATE of the old row.

http://dev.mysql.com/doc/refman/5.6/en/insert-on-duplicate.html

您需要在应该唯一的列组合上使用唯一键。

例如:

ALTER TABLE yourTable ADD UNIQUE KEY (`canid`, `categoryid`);

此外,在询问数据库问题时,请为相关表包含 SHOW CREATE TABLE

关于php - MYSQL 重复键不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12539757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com