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.