sql >> Base de Datos >  >> RDS >> Mysql

PDOStatement::execute() devuelve verdadero pero los datos no se actualizan

Cuando execute() devuelve verdadero significa que la declaración fue "correcta", pero no significa que haya cambiado nada. Simplemente significa que no hubo ningún error.

  • Puede haber coincidido con cero filas debido a las condiciones de la cláusula WHERE. Eso todavía se considera un "éxito". Puedes probar un SELECT con la misma cláusula WHERE y obtener los resultados para confirmar que coincide con las filas.

  • Es posible que haya coincidido con una o más filas, pero los valores que está configurando ya son los valores de esas filas. Puede llamar a $sth->rowCount() después de ejecutar, para averiguar cuántas filas afectó la ACTUALIZACIÓN (esto puede ser menor que el número de filas con las que coincidió).

  • Si tiene más de una copia de esta tabla, debe verificar que el cambio se haya realizado en la base de datos que está leyendo. A mí me pasa a veces:olvido cambiar un archivo de configuración de la aplicación y no me doy cuenta de que estoy actualizando la base de datos incorrecta.

Este resultó ser el problema, una variación del tercer punto:

  • Si trabaja en más de un servidor, también verifique dos veces que está verificando los cambios en el servidor mysql correcto.