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.