De PDO::exec()
functie retourneert het aantal betrokken rijen, inclusief 0 als er geen rijen zijn.
Een regel als deze zal die()
omdat exec
retourneert 0
wat wordt geïnterpreteerd als boolean false.
$dblink->exec("UPDATE `sometable` SET `somecolumn`=0 WHERE `somecolumn`=0") or die("Never use die for error handling.");
De beste foutafhandelingspraktijk voor PDO is om PDO-uitzonderingen te gebruiken. Schakel PDO-uitzonderingen (van de PDOException-klasse, zie documenten) als volgt in:
//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);
Verwijder or die()
en exit();
en schakel de uitzonderingsmodus in. Ik wed dat dit je "rare" probleem zal oplossen. Kijk ook eens naar het gooien van Exceptions in PHP, zelfs met procedurele code (ter vervanging van die()
en exit()
.
BTW exit
stopt de uitvoering net als die
, behalve dat het handig is in de CLI-modus omdat het een succes-/foutcode terugstuurt naar het besturingssysteem. Het is echt niet bedoeld voor foutafhandeling.