我有一个包含以下表test_users
的数据库:
| id | Username | Password |
| 1 | pat | ***** |
| 2 | roger | ***** |
| 3 | luke93 | ***** |
要插入一个新行,我使用下面的代码,它工作正常:
$sql = $conn->prepare("INSERT INTO `test_users` (`Username`, `Password`) VALUES (?,?)");
$sql->bind_param('ss',$name, $email);
但是现在我正在尝试制作一个“更新配置文件”页面,我想使用ON DUPLICATE KEY。这意味着我需要检查id
是否存在,如果存在,则更新该行。 Username
或Password
都不是唯一的,但id
是唯一的。我有一个$ _SESSION [“id”],如果用户登录则可以使用。我能以某种方式使用它吗?
那么如何编写一个SQL语句来查明是否存在id
,如果存在,则用ON DUPLICATE KEY(或更好的方式)覆盖它?
答案 0 :(得分:0)
首先写入selct查询并计算num行,如果它的0然后插入查询fire else update query
答案 1 :(得分:0)
UPDATE与插入相同。您只需要传递WHERE条件。 您可以使用以下代码执行此操作,尝试
$id = $_SESSION['id'];
$sql = "UPDATE test_users SET Username=?, Password=? WHERE id=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param($Username, $Password, $id);
$stmt->execute();
答案 2 :(得分:0)
指定您的唯一字段的唯一键,然后尝试以下查询 Insert into a MySQL table or update if exists
INSERT INTO test_user(id, username, password) VALUES(1, "test", "test") ON DUPLICATE KEY UPDATE
username="test", password="test"
答案 3 :(得分:0)
使用INSERT ... ON DUPLICATE KEY UPDATE
<强> QUERY:强>
INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE
name="A", age=19
归功于Donnie