1

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

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

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

4

3 回答 3

0

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

或将数据库模式更改为不包括计数,而只是每个用户的卡片列表 - 然后您可以在用户获得任何新卡时仅处理 INSERT,并在用户丢失卡时处理 DELETE。

于 2012-07-05T15:01:18.690 回答
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)
于 2012-07-05T15:09:11.823 回答
0

查询可能如下所示:

UPDATE userDeck 
SET amount = amount + $amount 
WHERE 
    idUser = $idUser AND 
    idCard = $idCard
于 2012-07-05T15:02:48.470 回答