所以我有三个数据库表,其中一个就像另外两个表之间的连接器,一个卡表和一个用户表。连接器表有三列:idUser、idCard 和 amount。
在我的代码中,我有一个选择按钮,您可以在其中选择添加同一张卡的 1-4 张,我希望能够通过立即添加 4 或一次添加一个来做到这一点(我希望金额列的最大值为 4)。
至于现在我的代码看起来像这样;
if (isset($_POST['addCard'])) {
if (!isset($_SESSION['sess_user'])){
print "fel!";
}else {
$idUser = $_SESSION['sess_id'];
$idCard = $_POST['addCard'];
$amount = $_POST['amount'];
$query1 = "INSERT INTO userDeck (idUser, idCard, amount) VALUES ('$idUser', '$idCard', '$amount')";
$result1 = mysql_query($query1);
}
}
这会检查用户是否已登录,否则它只会打印"错误"(只是在测试),如果登录,当我添加任意数量的卡片时,这仍然只会在表中创建一个新行。
我希望我已经添加了您可能需要的信息,真的坚持这一点,所以任何帮助都值得赞赏,谢谢!
切换(或添加更多逻辑)以包含UPDATE
语句。
或者将数据库架构更改为不包括计数,而只是每个用户的卡列表 - 然后,您可以在用户获得任何新卡时仅处理 INSERT,并在用户丢失卡时处理 DELETE。
查询可能如下所示:
UPDATE userDeck
SET amount = amount + $amount
WHERE
idUser = $idUser AND
idCard = $idCard
INSERT INTO userDeck (idUser, idCard, amount)
VALUES ('$idUser', '$idCard', '$amount')
ON DUPLICATE KEY UPDATE amount=amount+$amount
您需要在(idUser, idCard)
字段上具有复合唯一键或主键。
编辑:要使用相同的查询强制执行最多 4 张卡:
INSERT INTO userDeck (idUser, idCard, amount)
VALUES ('$idUser', '$idCard', MIN(4, '$amount'))
ON DUPLICATE KEY UPDATE amount=MIN(4, amount+$amount)