所以我有一个看起来像这样的表:

username - item - amount
user1 - sword - 1
user1 - sword - 1
user1 - sword - 1
user2 - sword - 1
user2 - sword - 1


我如何做到这一点,以便在我向一个用户添加项目时,他们像这样堆叠:

username - item - amount
user1 - sword - 3
user2 - sword - 2


添加项目的代码:

$sql = "insert into items (username, item, amount) values ('".$_SESSION['user_name']."', 'sword', '1')";

最佳答案

您需要为用户名和项目列创建唯一索引,并使用on duplicate key update,因此,如果出现相同的用户名和项目对,则将现有金额与新值相加

create unique index items_username_item on items(username, item);

insert into items (username, item, amount)
values ('".$_SESSION['user_name']."', 'sword', '1')
on duplicate key update amount = amount + values(amount);

10-08 15:24