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.