使用已设置的值向数据库列添加值


Adding a value to a database colum with already set value

所以我有三个数据库表,其中一个就像另外两个表之间的连接器,一个卡表和一个用户表。连接器表有三列: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)