如果id存在,则使用重复键,否则插入

时间:2017-04-18 04:44:40

标签: php mysql

我有一个包含以下表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是否存在,如果存在,则更新该行。 UsernamePassword都不是唯一的,但id是唯一的。我有一个$ _SESSION [“id”],如果用户登录则可以使用。我能以某种方式使用它吗? 那么如何编写一个SQL语句来查明是否存在id,如果存在,则用ON DUPLICATE KEY(或更好的方式)覆盖它?

4 个答案:

答案 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