CodeIgniter. Как посмотреть выполненные sql-запросы.
25 Мар 2010
Очень просто!
Если быть кратким, то:
//выполненные запросы:
print_r($this->db->queries);
//время выполнения запросов:
print_r($this->db->query_times);
А далее можно использовать эти массивы как необходимо. Сделать временные print_r() для отладки или оформить красивый вывод результатов в админ. части сайта.
Обратите внимание, что данные массивы будут пусты, если
$this->db->save_queries = FALSE; //(по умолчанию TRUE)
Информацию почерпнул из файла codeigniter\system\database\DB_driver.php
В файле описывается класс драйвера базы данных CI_DB_driver. В этом классе и объявлены, интересующие нас переменные (массивы).
class CI_DB_driver {
…
var $queries = array();
var $query_times = array();
…
}
Далее идет наследование (или расширение) это класса другими классами CI_DB и CI_DB_active_record, CI_DB_mysql_driver…
А в файле DB.php происходит создание объекта класса.
$driver = 'CI_DB_'.$params['dbdriver'].'_driver';
$DB =& new $driver($params);
Если вы работаете с MySQL, то будет создан объект класса CI_DB_mysql_driver.
Спасибо автору, а то $this->output->enable_profiler(TRUE); для моих нужд слишком громоздкий, а этот вариант в самый раз.
А вам спасибо за $this->output->enable_profiler(TRUE);
Автору респект, не знал такого способа. Красиво представить на этапе отладки sql-запросы и время, затраченное на выполнение можно с помощью библиотеки profiler.
Достаточно в начале контоллёра указать $this->output->enable_profiler(TRUE);