ユーザーがphpおよびmysqlで値を削除したときに値を減らしたい。 0未満にならないようにチェックしたい。値が0の場合、decrementをしない。
mysql_query("UPDATE table SET field = field - 1 WHERE id = $number");
フィールドがの場合、何もしません
field
が大きい場合のみ更新する別の条件を追加0
UPDATE table
SET field = field - 1
WHERE id = $number
and field > 0
GREATEST()
を使用することにより、新しい値がゼロ以下に落ちるのを防ぐことができます。値がゼロより下に下がると、ゼロは常に計算された値よりも大きくなるため、ゼロより下の値は使用できなくなります。
UPDATE table
SET field = GREATEST(0, field - 1)
WHERE id = $number
補足説明:mysql_*
関数は使用しないでください。これらは非推奨であり、最終的にはPHPから削除されます。代わりに [〜#〜] pdo [〜#〜] または MySQLi を使用してください。
GREATESTを使用するオプションは、新しいMySQLバージョンでは機能しません。また、1つではなく複数のフィールドを更新する場合、受け入れられた答えは役に立たない可能性があります。この問題の私の解決策はIFを使用しています:
UPDATE table
SET field = IF(field > 0, field - 1, 0)
WHERE id = $number
UPDATE table SET field = case when (field - 1) >0 then (field - 1)
else field end
WHERE id = $number