1

したがって、idUser、idCard、amount の 3 つの列を持つこのデータベース テーブル「userDeck」があります。金額は、ユーザーが特定のカードに追加したカードの枚数を追跡するカウンターです。現在、私はこのクエリを使用しています:

$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
$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 が提供するソリューションに加えて、厳密な sql_modeとともに、の型amountを(INTEGER 型であると仮定して) に変更することも検討してください。UNSIGNED

値を負の値に設定しようとすると、エラーが発生します。

于 2012-07-18T13:33:05.537 に答える
0
DELETE FROM userDeck WHERE amount<=0
于 2012-07-18T13:28:38.230 に答える