Главная > CodeIgniter > CodeIgniter. Как посмотреть выполненные sql-запросы.

CodeIgniter. Как посмотреть выполненные sql-запросы.

Очень просто! :)

Если быть кратким, то:


//выполненные запросы:
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.



  1. 23 Фев 2011 из 10:26 | #1

    Спасибо автору, а то $this->output->enable_profiler(TRUE); для моих нужд слишком громоздкий, а этот вариант в самый раз.

  2. 22 Апр 2010 из 15:24 | #2

    @ Andrey
    А вам спасибо за $this->output->enable_profiler(TRUE); :)

  3. 22 Апр 2010 из 15:03 | #3

    Автору респект, не знал такого способа. Красиво представить на этапе отладки sql-запросы и время, затраченное на выполнение можно с помощью библиотеки profiler.
    Достаточно в начале контоллёра указать $this->output->enable_profiler(TRUE);

  1. Трекбеков пока нет.