To najczęstszy mit dotyczący debugowania SQL. „Muszę zobaczyć zapytanie po przygotowaniu, aby móc stwierdzić, czy wystąpił błąd”. Faktem jest, nie , a powiem Ci dlaczego.
Po przygotowaniu zapytania symbol zastępczy można uznać za prawidłowy ciąg/liczbę całkowitą . Nie obchodzi cię, co w nim jest.
Ponadto, jeśli poprawnie skonfigurujesz PDO, otrzymasz szczegółowy PDOException
wyszczególniając błąd, który wystąpił wraz z pełnym śladem miejsca, w którym wystąpił błąd, a ponadto otrzymujesz ciąg błędu z MySQL, co sprawia, że błędy składniowe są bardzo łatwe do znalezienia.
Aby włączyć wyjątki PDO i wyłączyć emulowane przygotowania:
$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);