Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment savoir si une requête MySQL UPDATE échoue parce que les informations fournies correspondent à des données déjà présentes dans la base de données ?

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.