2010-07-29 6 views
2

Je suis encore assez nouveau avec MySQL et je ne connais pas la meilleure façon de le faire.MySQL condition

J'ai une table avec des valeurs incrémentées, et si les valeurs dépassent une certaine limite, j'aimerais savoir. Disons que j'ai cette table avec une colonne current et une colonne capacity. Une ligne dans current est incrémentée par l'entrée de l'utilisateur et je veux savoir quand la valeur dans une rangée current dépasse ou atteint la capacity correspondante.

Si current est toujours en dessous du capacity, je voudrais que la requête retourne vrai. Cependant, si current répond ou dépasse capacity, je voudrais que la requête renvoie false.

Merci!

Répondre

2

Ajouter une clause WHERE pour le faire vérifier dans votre UPDATE requête:

// I assume you mean you want to increment the current column by 1, 
// but it's your table so change the SET values as needed 
$updated = mysql_query('UPDATE table SET current = current + 1 WHERE id = ' . intval($row_id) . ' AND current < capacity'); 

vérifier ensuite mysql_affected_rows() de la requête UPDATE:

if (mysql_affected_rows() > 0) 
{ 
    // Success 
} 
+0

Merci! C'est exactement ce dont j'avais besoin. J'ai quand même une question. Chaque fois que je mets la variable associée à ma 'mysql_query' dans' mysql_affected_rows', cela ne fonctionnerait pas (dit que ce n'était pas une ressource MySQL valide). Quand je l'ai enlevé et utilisé 'mysql_affected_rows()' sans argument, ça a marché! Est-ce que tu sais pourquoi?? Merci! – tau

+0

Parce que c'était une erreur de ma part: la variable n'est pas censée être là. J'ai édité ma réponse pour l'enlever. Désolé pour la confusion! Heureusement, ma solution a fonctionné pour vous si :) – BoltClock

4

dans une base MySQL qui est facile:

select (current >= capacity) as exceeded from table 
+4

Est-ce que => un opérateur valide dans MySQL maintenant, ou voulez-vous dire> =? –

+0

woops. bien sûr que je voulais dire '> =' – knittl

+0

Cela ne devrait-il pas retourner vrai seulement quand 'current BoltClock