Quando
execute()
retorna verdadeiro significa que a declaração foi "bem-sucedida", mas não significa que mudou alguma coisa. Significa apenas que não houve erro. -
Ele pode ter correspondido a zero linhas devido a condições na cláusula WHERE. Isso ainda é considerado um "sucesso". Você pode tentar umSELECT
com a mesma cláusula WHERE e buscar os resultados, para confirmar que corresponde às linhas.
-
Ele pode ter correspondido a uma ou mais linhas, mas os valores que você está configurando já são os valores dessas linhas. Você pode chamar$sth->rowCount()
depois de executar, para descobrir quantas linhas o UPDATE afetou (isso pode ser menor que o número de linhas correspondentes).
-
Se você tiver mais de uma cópia dessa tabela, verifique novamente se a alteração foi feita no banco de dados que está lendo. Isso acontece comigo às vezes - eu esqueço de alterar um arquivo de configuração de aplicativo e não percebo que estou atualizando o banco de dados errado.
Esse acabou sendo o problema -- uma variação do terceiro ponto:
- Se você trabalha em mais de um servidor, verifique também se está verificando as alterações no servidor mysql correto.