1

所以我有这个数据库表“userDeck”,有三列:idUser、idCard、amount。金额是一个计数器,用于跟踪用户添加了多少张特定卡的卡。现在我正在使用这个查询:

$query1 = "UPDATE userDeck SET amount=amount-$amount WHERE idCard=$idCard"; 
$result2 = mysql_query($query1) or die(mysql_error());

当用户想要删除他/她添加的卡片时。

这工作得很好,但如果您删除的卡比您列出的多,它会继续低于 0。我希望它在数量达到 0 时删除该行。

4

5 回答 5

1

您可以添加语句:

DELETE FROM userDeck WHERE idCard=$idCard and amount = 0

更新后立即。

$query1 = "DELETE FROM userDeck WHERE idCard=$idCard and amount = 0";
$result2 = mysql_query($query1) or die(mysql_error()); 
于 2012-07-18T13:27:58.633 回答
0

两种方式

  1. 在 php 级别使用“应用程序控制”并且不让用户能够删除该卡
  2. 使用 where 条件排除那些具有amount = 0
于 2012-07-18T13:28:02.813 回答
0
DELETE FROM userDeck WHERE amount<=0
于 2012-07-18T13:28:38.230 回答
0
$query1 = "UPDATE userDeck SET amount=amount-$amount WHERE idCard=$idCard"; 
$result2 = mysql_query($query1) or die(mysql_error());

然后你可以在之后运行它:

$query_del = "DELETE FROM userDeck WHERE idCard=$idCard AND amount = 0"; 
mysql_query($query_del) or die(mysql_error());
于 2012-07-18T13:28:14.553 回答
0

除了 Gordon 提供的解决方案之外,还可以考虑将类型更改amountUNSIGNED(假设它是 INTEGER 类型)以及严格的 sql_mode

如果您尝试将值设置为负值,这将引发错误。

于 2012-07-18T13:33:05.537 回答