активная запись codeigniter, генерирует, но не выполняет запрос - PullRequest
2 голосов
/ 25 февраля 2011

Я работаю с библиотекой, которая должна получать SQL-запросы в виде строк для выполнения своей работы.

Я использую CodeIgniter и реализацию активной записи их класса базы данных.

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

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

Любая помощь в достижении этой цели была бы великолепна!

Ответы [ 6 ]

6 голосов
/ 20 ноября 2012

с небольшим взломом вы можете сделать это, перейдите в system / DB_active_rec.php и удалите защищенный метод ключевого слова в форме _compile_select и теперь

return $this->db->_compile_select();

Также используйте $this->db->from('table');

Вместо get(), потому что get выполнит запрос Вот пример

function index(){
    $this->db->select('blah blah');
    $this->db->from('table');
    $string = $this->db->_compile_select();
    return $string;
}
5 голосов
/ 27 февраля 2011

Зависит от типа запроса.вставка и обновление имеют методы, позволяющие вам сделать это.

$this->db->set('foo', $bar);
$this->db->update_string('table'); // UPDATE table SET foo = "bar"
3 голосов
/ 26 февраля 2011

Используемая вами функция last_query () возвращает строку запроса, но не выполняет ее.Попробуйте назначить функцию return переменной для использования в вашей библиотеке.

$str = $this->db->last_query();
2 голосов
/ 25 февраля 2011

Я не знаю, является ли это безопасной практикой, но объект db хранит свои запросы в атрибуте query, чтобы вы могли получить его через:

$this->db->queries

, который возвращает массив запросов.

0 голосов
/ 08 февраля 2019

Codeignitier предлагает несколько открытых методов для этой цели.

Получение запроса SELECT

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

Получение запроса INSERT

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

Получение запроса UPDATE

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

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

$sql = $this->db->get_compiled_delete()
0 голосов
/ 22 мая 2017

Начиная с Codeigniter 3, вы можете использовать get_compiled_select()

Чтобы использовать его до CI3, см. Есть ли такая функция, как _compile_select или get_compiled_select ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...