我需要更新數據庫中的記錄,但我不知道該記錄是否已經存在。如果存在,請更新它,否則插入它。現在,我想出了這個代碼:MYSQL更新或用PHP插入
1: <?php
2: $query = "UPDATE user_meta SET active = '0' WHERE user_id = '125'";
3: $mysqli->query($query);
4:
5: if($mysqli->affected_rows == 0){
6: $query = "INSERT INTO user_meta (user_id, active) VALUES ('125', 0)";
7: $mysqli->query($query);
8: }
表:
CREATE TABLE `user_meta` (
`user_id` int(11) DEFAULT NULL,
`active` tinyint(4) DEFAULT NULL,
UNIQUE KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
此代碼工作爲我好,但它實際上生成我忽視的錯誤。
問題出在這一行5
。如果沒有更改,受影響的行是0
,即使記錄已經存在。但是這會觸發INSERT語句。這一個失敗,因爲user_id字段是唯一的,現在我忽略這個,所以我的代碼工作正常。
但這是要走的路嗎? 或者我應該先做一個選擇,然後更新或插入?
使USER_ID int和不串並檢查 – Exprator
執行插入或更新之前,簡單地火一把'SELECT查詢來獲取計算該用戶id'。如果計數是1,則執行更新,否則執行插入。 –