PDO::exec()
Funkce vrací počet ovlivněných řádků, včetně 0, pokud nejsou ovlivněny žádné řádky.
Řádek jako tento die()
protože exec
vrátí 0
což je interpretováno jako logická nepravda.
$dblink->exec("UPDATE `sometable` SET `somecolumn`=0 WHERE `somecolumn`=0") or die("Never use die for error handling.");
Nejlepší praxí zpracování chyb pro PDO je použití výjimek PDO. Povolte výjimky PDO (třídy PDOException, viz dokumenty) takto:
//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);
Odstraňte or die()
a exit();
a povolit režim výjimky. Vsadím se, že to vyřeší váš "divný" problém. Podívejte se také na házení výjimek v PHP, dokonce i s procedurálním kódem (nahrazení die()
a exit()
.
BTW exit
zastaví provádění stejně jako die
, kromě toho, že je užitečný v režimu CLI, protože vrací do operačního systému kód úspěchu/chyby. Opravdu to není určeno pro zpracování chyb.