При работе с PDO потребовалось посмотреть запрос с уже подставленными в плейсхолдеры значениями.
Как не странно, но готового метода для этого не нашлось.
PDO отладка: как посмотреть запрос который выполняется.
22.08.2016
Готовый метод debugDumpParams не подходит, он просто выдает список параметров и сам запрос с плейсхолдерами, не подставляя значения.
В вариантах, найденных в интернете, в основном, предлагались варианты с расширением класса PDO. Вариант не плохой, но довольно громоздкий. Также он не удобен, если работаете с готовой библиотекой, не руками же менять в ней все обращения к PDO, на отладочный класс, да и нужно это только для отладки, а не всегда.
И вот был найден более подходящий вариант с использованием SHOW PROFILES.
Сама идея:
- Выполняем SQL команду SET profiling=1
- Выполняем нужный запрос
- Выполняем SHOW PROFILES
Вариант реализации:
$oDB->setQuery('SET profiling=1'); $oDB->query(); $oDB->setQuery('SELECT * FROM tblTest_1 WHERE id=:id'); $oDB->setBinds(array('id' => "1 AND '1=2 '\'/'--")); $aRows = $oDB->loadObjectsList(); $oDB->setQuery('SHOW PROFILES'); echo '<pre>'; print_r($oDB->loadObjectsList()); echo '</pre>';