2014-06-14 20 views
0

我正在嘗試爲我的網站創建一個關鍵字系統,但是我在路上遇到了碰撞。檢查重複在一行上,如果第二個唯一檢查

數據庫表有五行DATE | USERID | AMOUNT |關鍵字| ID

當插入一行到它需要檢查,如果關鍵字已經存在該用戶ID,如果是這樣的量增加,如果沒有它插入的1

的默認值到目前爲止,我有數據庫:

$stmt= $conn->prepare("INSERT INTO `keywords` (keyword, userId, id) VALUES(?,?,?) ON DUPLICATE KEY UPDATE `amount` = `amount` + 1"); 

如何檢查是否有重複的userid值並根據結果增加或插入關鍵字?

+1

這聽起來像你正在尋找有關'(關鍵字,USER_ID)唯一索引' – FuzzyTree

+0

我已經有一個,加了一點信息。 –

+0

就是這樣,我認爲userId有一個索引,但事實證明它並沒有因爲1000字節的限制而被添加。謝謝! –

回答

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具有比其他的默認值)

你需要的另一件事是一個約束,說keyword是唯一的。因此,添加一個唯一索引:

create unique index idx_keywords_keyword on keywords(keyword) 
+0

對不起,但事實證明,我只是犯了一個錯誤,不添加userId的索引。謝謝您的回答。 –