Une autre raison pour laquelle vous obtiendrez 0 lignes affectées est si le UPDATE
l'instruction ne correspond à aucune ligne. Par exemple :
UPDATE MyTable SET field = 'content' WHERE id = 1234;
Donne 0 lignes affectées si aucune ligne n'existe avec id = 1234
. Ce n'est pas non plus une erreur, c'est juste une UPDATE
qui s'est avéré ne correspondre à aucune ligne.
La façon de détecter ce cas est d'utiliser SELECT
pour vérifier qu'il existe une telle ligne. Si vous pouvez confirmer que la ligne existe, mais que le UPDATE
dit qu'il a affecté 0 lignes, alors vous savez que les valeurs que vous avez essayé de changer étaient en fait les lignes déjà dans la base de données.
SELECT COUNT(*) FROM MyTable WHERE id = 1234;
Mais la distinction n'est peut-être pas importante. Vous pouvez signaler une erreur si mysql_error()
indique qu'il y en a un, comme le suggère @BoltClock.* S'il n'y a pas d'erreur, vous pouvez simplement signaler "aucun changement" à l'utilisateur.