Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann man wissen, ob eine MySQL-UPDATE-Abfrage fehlschlägt, weil die bereitgestellten Informationen mit Daten übereinstimmen, die bereits in der Datenbank vorhanden sind?

Ein weiterer Grund, warum Sie 0 betroffene Zeilen erhalten, ist, wenn UPDATE Anweisung stimmt mit keinen Zeilen überein. Zum Beispiel:

UPDATE MyTable SET field = 'content' WHERE id = 1234;

Gibt 0 betroffene Zeilen zurück, wenn keine Zeile mit id = 1234 existiert . Auch das ist kein Fehler, sondern nur ein UPDATE das zufällig mit keiner Zeile übereinstimmte.

Um diesen Fall zu erkennen, verwenden Sie SELECT um zu überprüfen, ob es eine solche Zeile gibt. Wenn Sie bestätigen können, dass die Zeile existiert, aber UPDATE sagte, es seien 0 Zeilen betroffen, dann wissen Sie, dass die Werte, die Sie zu ändern versuchten, tatsächlich die Zeilen waren, die sich bereits in der Datenbank befanden.

SELECT COUNT(*) FROM MyTable WHERE id = 1234;

Aber die Unterscheidung ist vielleicht nicht wichtig. Sie könnten einen Fehler melden, wenn mysql_error() sagt, dass es einen gibt, wie @BoltClock vorschlägt.*Wenn es keinen Fehler gibt, können Sie dem Benutzer einfach "keine Änderung" melden.