我需要更新数据库中的记录,但我不知道该记录是否已经存在。如果存在,请更新它,否则插入它。现在,我想出了这个代码: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,则执行更新,否则执行插入。 –