在添加新值时更新现有值

时间:2019-04-01 18:15:04

标签: mysql sql mysqli

我正在将一些值插入数据库。

$stmt = $conn->prepare("INSERT INTO `members` (`id`, `name`, `nickname`, `prefix`, `suffix`) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("sssss",$row['member_id'], $row['name'], $row['nickname'], $row['prefix'], $row['suffix']);
$stmt->execute();

这就是我想要的:如果有新用户加入,这会将他们添加到成员中。但是,如果已有成员更改了昵称,则此信息不会更新。我想1)像现在一样添加新成员,而且2)如果有任何更改,请更新现有成员的昵称。

我尝试在上面的代码之后添加以下代码(先添加成员,然后更新),但是它似乎并没有按我想要的那样工作。

$stmt = $conn->prepare("UPDATE members SET nickname = '?' WHERE id = '?'");
$stmt->bind_param("ss",$row['nickname'], $row['id']);
$stmt->execute();

1 个答案:

答案 0 :(得分:0)

您可以使用REPLACE INTO代替INSERT INTO 您的prepare()应该有

REPLACE INTO `members` (`id`, `name`, `nickname`, `prefix`, `suffix`) VALUES (?, ?, ?, ?, ?)

REPLACE如果主键值已存在,则更新新数据。 此处有更多详细信息:https://dev.mysql.com/doc/refman/5.5/en/replace.html