PDO::exec() 関数は、影響を受ける行の数を返します。影響を受ける行がない場合は0を含みます。
このような行はdie() exec 0を返します これはブール値のfalseとして解釈されます。
$dblink->exec("UPDATE `sometable` SET `somecolumn`=0 WHERE `somecolumn`=0") or die("Never use die for error handling.");
PDOの最良のエラー処理方法は、PDO例外を使用することです。次のように(PDOExceptionクラスの)PDO例外を有効にします。
//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);
or die()を削除します およびexit(); 例外モードを有効にします。私はこれがあなたの「奇妙な」問題を解決するに違いない。また、手続き型コード(die()を置き換える)を使用した場合でも、PHPで例外をスローする方法を確認してください。 およびexit() 。
ところでexit dieと同じように実行を停止します ただし、オペレーティングシステムに成功/エラーコードを返すため、CLIモードで役立ちます。実際にはエラー処理を目的としたものではありません。