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

PDOStatement::execute() renvoie true mais les données ne sont pas mises à jour

Lorsque execute() renvoie vrai cela signifie que la déclaration a été "réussie", mais cela ne signifie pas qu'elle a changé quoi que ce soit. Cela signifie simplement qu'il n'y a pas eu d'erreur.

  • Il se peut qu'il ne corresponde à aucune ligne en raison des conditions de la clause WHERE. C'est toujours considéré comme un "succès". Vous pouvez essayer un SELECT avec la même clause WHERE et récupérez les résultats pour confirmer qu'ils correspondent aux lignes.

  • Il peut correspondre à une ou plusieurs lignes, mais les valeurs que vous définissez sont déjà les valeurs de ces lignes. Vous pouvez appeler $sth->rowCount() après l'exécution, pour savoir combien de lignes le UPDATE a affecté (cela peut être inférieur au nombre de lignes correspondant).

  • Si vous avez plus d'une copie de ce tableau, vous devez revérifier que la modification a été effectuée dans la base de données que vous lisez. Cela m'arrive parfois - j'oublie de modifier un fichier de configuration d'application et je ne réalise pas que je mets à jour la mauvaise base de données.

Ceci s'est avéré être le problème -- une variation sur le troisième point :

  • Si vous travaillez sur plusieurs serveurs, vérifiez également que vous vérifiez les modifications sur le bon serveur mysql.