Эхо-запрос перед выполнением и без выполнения в codeigniter Active Record - PullRequest
22 голосов
/ 26 января 2012

Я ищу способ увидеть сгенерированную строку запроса, но без ее выполнения.

Обратите внимание, что запрос не был выполнен ранее. (Я не хочу $this->db->last_query();)

Я надеюсь, что будет метод с именем, подобным $this->db->echo_query_string($table_name = '');, который будет использоваться точно так же, как $this->db->get($table_name = ''); НО ЕДИНСТВЕННОЕ РАЗНОЕ, ЧТО get() выполняет код, но echo_query_string() просто повторяет строку запроса без выполнения .

Ответы [ 5 ]

26 голосов
/ 26 января 2012

Вы можете увидеть скомпилированный запрос с помощью любой из этих функций

/* SELECT */ $this->db->_compile_select();
/* INSERT */ $this->db->_insert();
/* UPDATE */ $this->db->_update();
20 голосов
/ 14 августа 2013

Вам не нужно изменять какой-либо файл в codeigniter, потому что он уже предоставляет метод для этого.

Использование

echo $this->db->last_query();

будет производить

select * from some_table...

И это все.

10 голосов
/ 21 ноября 2012

Я добавил этот маленький метод в 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()

Который запускает запрос

3 голосов
/ 26 февраля 2018

Начиная с версии 3 Codeigniter, см. этот URL, а также этот

  • echo $this->db->update_string(); ИЛИ echo $this->db->get_compiled_update();
  • echo $this->db->insert_string(); ИЛИ $this->db->get_compiled_insert();
  • echo $this->db->get_compiled_delete();
  • echo $this->db->get_compiled_select();
0 голосов
/ 08 февраля 2019

Вы можете использовать некоторые публичные методы для получения SQL-запросов

Получить запрос SELECT

$sql = $this->db->get_compiled_select()

Получить запрос INSERT

$sql = $this->db->get_compiled_insert()

Получить запрос ОБНОВЛЕНИЯ

$sql = $this->db->get_compiled_update()

Получить запрос DELETE

$sql = $this->db->get_compiled_delete()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...