Le PDO::exec()
renvoie le nombre de lignes affectées, y compris 0 si aucune ligne n'est affectée.
Une ligne comme celle-ci die()
parce que exec
renverra 0
qui est interprété comme booléen faux.
$dblink->exec("UPDATE `sometable` SET `somecolumn`=0 WHERE `somecolumn`=0") or die("Never use die for error handling.");
La meilleure pratique de gestion des erreurs pour PDO consiste à utiliser des exceptions PDO. Activez les exceptions PDO (de la classe PDOException, voir la documentation) comme ceci :
//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);
Supprimer or die()
et exit();
et activer le mode exception. Je parie que cela résoudra votre problème "bizarre". Jetez également un œil à la levée d'exceptions en PHP, même avec du code procédural (pour remplacer die()
et exit()
.
BTW exit
arrête l'exécution comme die
, sauf qu'il est utile en mode CLI car il renvoie un code de réussite/erreur au système d'exploitation. Ce n'est vraiment pas destiné à la gestion des erreurs.