Al principio evité encender el registro para monitorear PDO porque pensé que sería una molestia pero no es difícil en absoluto. No es necesario reiniciar MySQL (después 5.1.9):
lo ejecutaron en phpMyAdmin o cualquier otro entorno en el que pueda tener altos privilegios DB:
SET GLOBAL general_log = 'ON';
En un terminal, el registro de la cola archivo. El mío era aquí:
>sudo tail -f /usr/local/mysql/data/myMacComputerName.log
Puede buscar los archivos de MySQL con este comando en el terminal:
>ps auxww|grep [m]ysqld
encontré que DOP escapa todo, así que no se puede escribir
$dynamicField = 'userName';
$sql = "SELECT * FROM `example` WHERE `:field` = :value";
$this->statement = $this->db->prepare($sql);
$this->statement->bindValue(':field', $dynamicField);
$this->statement->bindValue(':value', 'mick');
$this->statement->execute();
Porque crea:
SELECT * FROM `example` WHERE `'userName'` = 'mick' ;
que no creó un error, solo un resultado vacío. En lugar necesitaba usar
$sql = "SELECT * FROM `example` WHERE `$dynamicField` = :value";
para obtener
SELECT * FROM `example` WHERE `userName` = 'mick' ;
Cuando haya terminado de ejecutar:
SET GLOBAL general_log = 'OFF';
o bien sus registros obtendrán enormes.
Me gustaría que hubiera una manera de hacerlo. Me ha estado molestando por un tiempo. –
Para PHP> = 5.1, eche un vistazo a http://www.php.net/manual/en/pdostatement.debugdumpparams.php – Mawg
Hay un error en 'debugDumpParams()' - no se incluyen valores en la salida.La única forma de (fácilmente) verificar las consultas ejecutadas por 'mysql' es habilitar temporalmente el registro en my.cnf (h/t to @JB Hurteaux) –