gpt4 book ai didi

php - MySql - 避免更新时重复记录

转载 作者:行者123 更新时间:2023-11-30 01:33:07 25 4
gpt4 key购买 nike

我有以下更新查询,当用户登录其帐户并在登录之前将商品放入购物车时运行(在 table 上设置的临时帐户)...

UPDATE cart_items SET account_id=$account WHERE account_id=$cookieId;

这有时会产生类似这样的重复结果:

id | account_id | itemNumber | itemQuantity
------------------------------------------
20 | 10 | 6 | 2
25 | 10 | 6 | 1

我想做的是编写一个查询,避免创建这些重复的记录,只留下一条记录,如下所示:

id | account_id | itemNumber | itemQuantity
------------------------------------------
20 | 10 | 6 | 3

我认为使用DUPLICATE KEY UPDATE可能是我正在寻找的东西,但我无法理解它。有人可以帮我吗?

最佳答案

||已更新||

假设您有一个未登录的用户,临时 ID 为 15,并且他订购了 2 件商品,商品编号为 6:

id | account_id | itemNumber | itemQuantity
------------------------------------------
20 | 15 | 6 | 2

临时 ID 存储在变量 $cookieId 中,其值为 15。现在假设该用户使用 $account 中存储的 id 登录其帐户,其值为 10。

作为登录过程的一部分,您想要执行查询:

UPDATE cart_items SET account_id=$account WHERE account_id=$cookieId;

(尽管准备好的语句应该是您想要查看的内容)。

该条目现在应如下所示:

id | account_id | itemNumber | itemQuantity
------------------------------------------
20 | 10 | 6 | 2

现在假设用户 10 想要再购买 1 件商品 6,那么最有意义的是

SELECT * FROM cart_items WHERE account_id = $account AND itemNumber = $itemNumber; // $itemNumber is 6

如果查询返回 true,那么您

UPDATE cart_items SET itemQuantity = itemQuantity+$numerOfItemsInOrder WHERE $account = $account AND itemNumber = $itemNumber; // $itemNumber is 6

,否则插入。

您绝对不想在用户注销时更新 account_id,而只在用户登录时更新。

关于php - MySql - 避免更新时重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17214599/

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