gpt4 book ai didi

php - SQL 语句 INSERT,在重复的列上 UPDATE

转载 作者:行者123 更新时间:2023-11-29 06:27:57 25 4
gpt4 key购买 nike

我有一个 SQL 表,其中包含用户可以链接到其个人资料的项目列表。 SQL 表看起来像这样:

Item_Activity_ID       Item_ID      User_ID     Status    Date-Added    

1 1 1 1 2015-06-08
2 2 2 1 2015-06-08
3 1 1 0 2015-06-09

该条目显示用户 ID 为 1 的用户添加了项目 ID 1 两次,唯一更改的是日期和状态。我想这样做,以便在给出 INSERT 语句时,例如:

INSERT INTO items (Item_ID, User_ID, Status, Date_Added) VALUES ('$x', '$y', 1, CURDATE()) IF EXISTS SOME Item_ID = $x AND User_ID = $y UPDATE items SET Status = 1, Date_Added = CURDATE() WHERE Item_ID = $x AND User_ID = $y

Item_Activity_ID 是一个自动递增的主键索引。如何在一个查询中完成此操作?两个用户可以拥有相同的项目,但绝不能重复输入相同的用户 ID 和项目 ID。

最佳答案

  • 首先,为 Item_ID、UserID 组合创建一个唯一索引,

  • 然后,使用 INSERT ... ON DUPLICATE KEY UPDATE statement :

    INSERT INTO items (Item_ID, User_ID, Status, Date_Added) 
    VALUES ('$x', '$y', 1, CURDATE())
    ON DUPLICATE KEY UPDATE Status = VALUES(Status), Date_Added = VALUES(Date_Added))

附言确保清理 $x$y 以防止 SQL 注入(inject)!

关于php - SQL 语句 INSERT,在重复的列上 UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29783165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com