To je nejběžnější mýtus o ladění SQL. "Potřebuji vidět dotaz po přípravě, abych mohl zjistit, zda došlo k chybě." Faktem je, že nemáte , a já vám řeknu proč.
Jakmile je dotaz připraven, lze zástupný symbol považovat za platný řetězec/celé číslo . Je vám jedno, co v něm je.
Pokud správně nastavíte PDO, získáte podrobnou PDOException
s podrobným popisem chyby, kterou jste měli, spolu s úplným zpětným sledováním místa, kde k chybě došlo, a navíc získáte chybový řetězec z MySQL, díky kterému je velmi snadné najít syntaktické chyby.
Chcete-li povolit výjimky PDO a zakázat emulované přípravy:
$pdo = new PDO("mysql:host=localhost;dbname=database_name", "user", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);