我正在将一些值插入数据库。
$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();
答案 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