Question

Je suis en train de mettre en œuvre un système de notation où je garde les deux champs suivants dans ma table db:

note (la note actuelle) num_rates (le nombre d'évaluations soumises à ce jour)

UPDATE `mytable`
   SET rating=((rating*num_rates)+$theRating)/num_rates, num_rates=num_rates+1
 WHERE uniqueCol='$uniqueCol'

les variables sont de mon code PHP.

Alors, au fond parfois la ligne avec la uniqueCol n'existe pas dans la base de données, alors comment puis-je faire la déclaration ci-dessus si le existe et si elle n'a pas faire quelque chose comme ceci:

INSERT INTO `mytable`
   SET rating=$theRating, num_rates=1, uniqueCol=$uniqueCol
Était-ce utile?

La solution

Jetez un oeil à INSERT ... ON KEY UPDATE DUPLICATE.

Il devrait ressembler à quelque chose comme ça:

INSERT INTO mytable (rating, num_rates, uniqueCol)
VALUES ($theRating, 1, $uniqueCol)
ON DUPLICATE KEY UPDATE
  rating=((rating*num_rates)+$theRating)/num_rates,
  num_rates=num_rates+1;

Assurez-vous d'avoir un UNIQUE index ou PRIMARY KEY sur votre uniqueCol.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top