我正在尝试为我的网站创建一个关键字系统,但我遇到了一个障碍。
数据库表有五行DATE | USERID | AMOUNT |关键词| ID
在数据库中插入行时,需要检查该用户ID是否已存在该关键字,如果是,则增加数量,如果没有,则插入默认值为1.
到目前为止,我有:
$stmt= $conn->prepare("INSERT INTO `keywords` (keyword, userId, id) VALUES(?,?,?) ON DUPLICATE KEY UPDATE `amount` = `amount` + 1");
如何检查userid值是否重复并增加或根据结果插入关键字?
答案 0 :(得分:1)
您的查询是:
INSERT INTO `keywords`(keyword, userId, id)
VALUES(?,?,?)
ON DUPLICATE KEY UPDATE `amount` = `amount` + 1;
这看起来像你想做的事情,可能只有一个小小的变化:
INSERT INTO `keywords`(keyword, userId, id)
VALUES(?,?,?)
ON DUPLICATE KEY UPDATE `amount` = coalesce(`amount`, 0) + 1;
(如果amount
的默认值不是NULL
,则不需要这样做。)
您需要的另一件事是约束,即keyword
是唯一的。因此,添加一个唯一的索引:
create unique index idx_keywords_keyword on keywords(keyword)