将值添加到已设置值的数据库列

时间:2012-07-05 14:51:26

标签: php mysql sql

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

这会检查用户是否已登录,否则只会打印“错误”(只是测试一下),如果登录,当我添加任意数量的卡时,这仍然会在表格中创建一个新行

我希望我已经添加了您可能需要的信息,真的坚持这一点,所以任何帮助都是适当的,谢谢!

3 个答案:

答案 0 :(得分:0)

切换(或添加更多逻辑)以包含UPDATE语句。

或更改数据库架构以不包括计数,而只是每个用户的卡片列表 - 然后您只能在用户获得任何新卡时处理INSERT,并在用户丢失卡时删除。

答案 1 :(得分:0)

查询可能如下所示:

UPDATE userDeck 
SET amount = amount + $amount 
WHERE 
    idUser = $idUser AND 
    idCard = $idCard

答案 2 :(得分:0)

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)