所以我有三个数据库表,其中一个数据库表就像两个其他表之间的连接器,一个卡表和一个用户表。连接器表有三列: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);
}
}
这会检查用户是否已登录,否则只会打印“错误”(只是测试一下),如果登录,当我添加任意数量的卡时,这仍然会在表格中创建一个新行
我希望我已经添加了您可能需要的信息,真的坚持这一点,所以任何帮助都是适当的,谢谢!
答案 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)