sql >> Databasteknik >  >> RDS >> Mysql

PDO vägrar att radera en rad med data (i specifik tabell)

PDO::exec() funktion returnerar antalet berörda rader, inklusive 0 om inga rader påverkas.

En rad som denna kommer att die() eftersom exec returnerar 0 vilket tolkas som booleskt falskt.

$dblink->exec("UPDATE `sometable` SET `somecolumn`=0 WHERE `somecolumn`=0") or die("Never use die for error handling.");

Den bästa felhanteringsmetoden för PDO är att använda PDO-undantag. Aktivera PDO-undantag (av PDOException-klassen, se dokument) så här:

//enable Exception mode (uncaught exceptions work just like die() with the benefit of giving you details in logs of where execution was stopped and for what reason)
$pdoDBHandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Ta bort or die() och exit(); och aktivera undantagsläge. Jag slår vad om att detta kommer att lösa ditt "konstiga" problem. Ta också en titt på att kasta undantag i PHP, även med procedurkod (för att ersätta die() och exit() .

BTW exit stoppar exekveringen precis som die , förutom att den är användbar i CLI-läge eftersom den returnerar en framgångs-/felkod till operativsystemet. Det är verkligen inte avsett för felhantering.




  1. Var kan jag ladda ner mysql jdbc jar från?

  2. Långsam prestanda för SqlDataReader

  3. Min MySQL-trigger fungerar inte, enkel syntax, inte komplicerad

  4. Hur man importerar/återställer MySql-tabeller med PHP