O
PDO::exec() A função retorna o número de linhas afetadas, incluindo 0 se nenhuma linha for afetada. Uma linha como esta
die() porque exec retornará 0 que é interpretado como booleano falso. $dblink->exec("UPDATE `sometable` SET `somecolumn`=0 WHERE `somecolumn`=0") or die("Never use die for error handling.");
A melhor prática de tratamento de erros para PDO é usar exceções de PDO. Habilite exceções PDO (da classe PDOException, veja docs) assim:
//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);
Remova
or die() e exit(); e habilite o modo de exceção. Aposto que isso resolverá seu problema "estranho". Veja também como lançar Exceptions em PHP, mesmo com código procedural (para substituir die() e exit() . BTW
exit para a execução assim como die , exceto que é útil no modo CLI porque retorna um código de sucesso/erro para o sistema operacional. Realmente não é para tratamento de erros.