Když execute()
vrátí true znamená to, že prohlášení bylo "úspěšné", ale to neznamená, že se něco změnilo. Znamená to pouze, že nedošlo k žádné chybě.
-
Může se shodovat s nulovými řádky kvůli podmínkám v klauzuli WHERE. To je stále považováno za „úspěch“. Můžete zkusit
SELECT
se stejnou klauzulí WHERE a načtěte výsledky, abyste potvrdili, že odpovídá řádkům. -
Může se shodovat s jedním nebo více řádky, ale hodnoty, které nastavujete, jsou již hodnoty na těchto řádcích. Můžete zavolat
$sth->rowCount()
po spuštění, abyste zjistili, kolik řádků UPDATE ovlivnila (může být menší než počet odpovídajících řádků). -
Pokud máte více než jednu kopii této tabulky, měli byste znovu zkontrolovat, zda byla změna provedena v databázi, kterou čtete. Občas se mi to stává -- zapomenu změnit konfigurační soubor aplikace a neuvědomuji si, že aktualizuji špatnou databázi.
Toto se ukázalo jako problém – variace na třetí bod:
- Pokud pracujete na více než jednom serveru, také znovu zkontrolujte, zda kontrolujete změny na správném serveru mysql.