Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PDOStatement::execute() retorna true mas os dados não são atualizados


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 um SELECT 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.