sql >> Database >  >> RDS >> Mysql

PDOStatement::execute() retourneert true maar de gegevens worden niet bijgewerkt

Wanneer execute() retourneert true het betekent dat de verklaring "succesvol" was, maar het betekent niet dat het iets heeft veranderd. Het betekent alleen dat er geen fout was.

  • Het komt mogelijk overeen met nul rijen vanwege voorwaarden in de WHERE-component. Dat wordt nog steeds als een 'succes' beschouwd. Je kunt een SELECT . proberen met dezelfde WHERE-component en haal de resultaten op om te bevestigen dat deze overeenkomen met rijen.

  • Het kan overeenkomen met een of meer rijen, maar de waarden die u instelt, zijn al de waarden in die rijen. U kunt $sth->rowCount() . aanroepen nadat je het hebt uitgevoerd, om erachter te komen hoeveel rijen de UPDATE beïnvloedt (dit kan minder zijn dan het aantal overeenkomende rijen).

  • Als u meer dan één exemplaar van deze tabel heeft, moet u controleren of de wijziging is aangebracht in de database die u aan het lezen bent. Het overkomt me soms -- ik vergeet een applicatieconfiguratiebestand te wijzigen en ik realiseer me niet dat ik de verkeerde database bijwerk.

Dit bleek het probleem te zijn -- een variatie op het derde punt:

  • Als u op meer dan één server werkt, controleer dan ook nogmaals of u de wijzigingen op de juiste mysql-server controleert.


  1. Oracle-weergave meer dan 24 uur

  2. Een MySQL-schema voor entiteit-kenmerk-waarde draaien

  3. Hoe MySQLdb op Mountain Lion te installeren

  4. Stop (lang)lopende SQL-query in PostgreSQL wanneer sessie of verzoeken niet meer bestaan?