Я ищу способ увидеть сгенерированную строку запроса, но не выполнив его.
Обратите внимание, что запрос ранее не выполнялся. (Я не хочу $this->db->last_query();
)
Я надеюсь, что существует метод с именем типа $this->db->echo_query_string($table_name = '');
для использования точно так же, как $this->db->get($table_name = '');
НО ТОЛЬКО РАЗНИЦА БЫТЬ, ЧТО get()
выполняет код, но echo_query_string()
просто перекликается с строкой запроса без выполнения .
Вы можете просмотреть скомпилированный запрос с помощью любой из этих функций
/* SELECT */ $this->db->_compile_select(); /* INSERT */ $this->db->_insert(); /* UPDATE */ $this->db->_update();
Вам не нужно изменять какой-либо файл в codeigniter, потому что он уже предоставляет метод для этого.
С помощью
echo $this->db->last_query();
будет производить
select * from some_table...
И это все.
Я добавил этот небольшой метод в DB_active_rec.php
function return_query() { return $this->_compile_select(); }
Применение
$this->db->select('id,user_name')->from('user')->where('id',1); $string = $this->db->return_query(); echo $string;
результат
SELECT `id`, `user_name` FROM (`user`) WHERE `id` = 1
Таким образом, вы обязаны использовать
$this->db->from()
Вместо
$this->db->get()
Выполняется запрос