Valeur de démence B. mysql, Mais pas négatif

Je veux réduire la valeur lorsque l'utilisateur le supprime php et mysql. Je veux vérifier pas tomber en dessous 0. Si la valeur est égale 0, alors ne.

Réduire

le sien .


mysql_query/"UPDATE table SET field = field - 1 WHERE id = $number"/;


Si le champ est égal

0

, Alors ne rien faire
Invité:

Dominique

Confirmation de:

Ajoutez une condition de plus pour mettre à jour seulement si
field

Suite
0



UPDATE table 
SET field = field - 1
WHERE id = $number
and field > 0

Cyprien

Confirmation de:

Vous pouvez empêcher la chute de la nouvelle valeur en dessous de zéro en utilisant
http://dev.mysql.com/doc/refma ... atest
. Si la valeur tombe en dessous de zéro, zéro sera toujours plus que votre valeur calculée, ce qui empêche l'utilisation de toute valeur inférieure à zéro.


UPDATE table
SET field = GREATEST/0, field - 1/
WHERE id = $number


Et un autre commentaire: Veuillez ne plus utiliser les fonctions.
mysql_*

. Ils sont obsolètes et finalement être retirés de PHP. Au lieu de cela, utilisez
http://php.net/pdo
ou
http://php.net/mysqli
.

Damien

Confirmation de:

Option en utilisant GREATEST ne fonctionnera pas dans les versions plus récentes MySQL, Et la réponse reçue peut être inutile si vous souhaitez mettre à jour plusieurs champs au lieu d'un. Ma solution à ce problème est d'utiliser IF:


UPDATE table
SET field = IF/field > 0, field - 1, 0/
WHERE id = $number

Edmond

Confirmation de:

UPDATE table SET field = case when /field - 1/ >0 then /field - 1/
else field end
WHERE id = $number

Conrad

Confirmation de:

Si le champ int unsigned, C'est le meilleur ci-dessous:


UPDATE table 
SET field = field - 1
WHERE id = $number
and field > 0

# or
UPDATE table
SET field = IF/field > 0, field - 1, 0/
WHERE id = $number

Ernest

Confirmation de:

UPDATE `table_name` SET field = field-1 WHERE `id` = '".$id."' AND field > 0


Remarque: le type de données de champ doit être INTEGER.

Pour répondre aux questions, connectez-vous ou registre