Mysql
 sql >> Database >  >> RDS >> Mysql

PDOStatement::execute() restituisce true ma i dati non vengono aggiornati

Quando execute() restituisce vero significa che l'affermazione ha avuto successo, ma non significa che abbia cambiato nulla. Significa solo che non c'è stato alcun errore.

  • Potrebbe aver trovato zero righe a causa delle condizioni nella clausola WHERE. Questo è ancora considerato un "successo". Puoi provare un SELECT con la stessa clausola WHERE e recupera i risultati per confermare che corrisponda alle righe.

  • Potrebbe corrispondere a una o più righe, ma i valori che stai impostando sono già i valori su quelle righe. Puoi chiamare $sth->rowCount() dopo l'esecuzione, per scoprire quante righe UPDATE ha interessato (questo potrebbe essere inferiore al numero di righe corrispondenti).

  • Se hai più di una copia di questa tabella, dovresti ricontrollare che la modifica sia stata apportata nel database che stai leggendo. A volte mi capita:mi dimentico di modificare un file di configurazione dell'applicazione e non mi rendo conto che sto aggiornando il database sbagliato.

Questo si è rivelato essere il problema -- una variazione sul terzo punto:

  • Se lavori su più di un server, controlla anche di controllare le modifiche sul server MySQL corretto.