Wenn execute()
gibt true zurück es bedeutet, dass die Aussage „erfolgreich“ war, aber es bedeutet nicht, dass sie etwas geändert hat. Es bedeutet nur, dass kein Fehler aufgetreten ist.
-
Aufgrund von Bedingungen in der WHERE-Klausel wurden möglicherweise keine Zeilen gefunden. Das gilt immer noch als "Erfolg". Sie können ein
SELECT
versuchen mit der gleichen WHERE-Klausel und rufe die Ergebnisse ab, um zu bestätigen, dass sie mit Zeilen übereinstimmen. -
Möglicherweise stimmte es mit einer oder mehreren Zeilen überein, aber die Werte, die Sie festlegen, sind bereits die Werte in diesen Zeilen. Sie können
$sth->rowCount()
aufrufen nach der Ausführung, um herauszufinden, wie viele Zeilen das UPDATE betroffen hat (Dies kann weniger als die Anzahl der übereinstimmenden Zeilen sein). -
Wenn Sie mehr als eine Kopie dieser Tabelle haben, sollten Sie überprüfen, ob die Änderung in der Datenbank, die Sie lesen, vorgenommen wurde. Es passiert mir manchmal – ich vergesse, eine Anwendungskonfigurationsdatei zu ändern, und ich merke nicht, dass ich die falsche Datenbank aktualisiere.
Dies stellte sich als das Problem heraus – eine Variation des dritten Punktes:
- Wenn Sie auf mehr als einem Server arbeiten, überprüfen Sie auch, ob Sie die Änderungen auf dem richtigen MySQL-Server überprüfen.