Når execute()
returnerer sandt det betyder, at udtalelsen var "succesfuld", men det betyder ikke, at den ændrede noget. Det betyder bare, at der ikke var nogen fejl.
-
Det kan have matchet nul rækker på grund af betingelserne i WHERE-udtrykket. Det betragtes stadig som en "succes". Du kan prøve en
SELECT
med den samme WHERE-sætning, og hent resultaterne for at bekræfte, at den matcher rækker. -
Det kan have matchet en eller flere rækker, men de værdier, du indstiller, er allerede værdierne på disse rækker. Du kan kalde
$sth->rowCount()
efter du har udført, for at finde ud af, hvor mange rækker OPDATERING påvirkede (dette kan være mindre end antallet af rækker, det matchede). -
Hvis du har mere end én kopi af denne tabel, bør du dobbelttjekke, at ændringen er foretaget i den database, du læser. Det sker nogle gange for mig -- jeg glemmer at ændre en programkonfigurationsfil, og jeg er ikke klar over, at jeg opdaterer den forkerte database.
Dette viste sig at være problemet -- en variation af det tredje punkt:
- Hvis du arbejder på mere end én server, skal du også dobbelttjekke, at du tjekker ændringerne på den korrekte mysql-server.