Ese es el mito más común sobre la depuración de SQL. "Necesito ver la consulta después de la preparación para poder saber si ocurrió un error". El hecho es que no , y te diré por qué.
Una vez que se ha preparado una consulta, el marcador de posición se puede considerar como una cadena/entero válido . No te importa lo que hay en él.
Además, si configura PDO correctamente, obtendrá una PDOException
detallada detallando el error que ha tenido junto con un seguimiento completo de dónde ocurrió el error, además obtiene la cadena de error de MySQL, lo que hace que los errores de sintaxis sean muy fáciles de encontrar.
Para habilitar las excepciones de PDO y deshabilitar las preparaciones emuladas:
$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);