В моей модели есть оператор sql,
Я тогда говорю
$query = $this->db->query($sql, array(fields, fields1);
if ($query) {
return true:
} else {
echo "failed";
return false;
}
Мой запрос всегда терпит неудачу, как мне заставить php печатать точный оператор sql, отправляемый в мою базу данных? И отобразить это в моем представлении php, странице
php
sql
codeigniter
Technupe
источник
источник
Вы можете использовать это:
«Возвращает последний выполненный запрос (строку запроса, а не результат)».
Reff: https://www.codeigniter.com/userguide3/database/helpers.html
источник
Вы можете отобразить SQL, сгенерированный ActiveRecord:
Перед запуском запроса:
И после его запуска:
источник
$this->db->get_compiled_select()
вместо этого.если вам нужен быстрый тест по вашему запросу, это отлично подходит для меня
источник
После безуспешной попытки использовать
_compiled_select()
илиget_compiled_select()
я просто распечаталdb
объект, и вы можете увидеть запрос вqueries
свойстве.Попробуй сам:
Если вы знаете, что у вас есть только один запрос, вы можете распечатать его напрямую:
источник
Есть новый общедоступный метод,
get_compiled_select
который может распечатать запрос перед его запуском._compile_select
теперь защищен, поэтому не может быть использован.источник
Вы можете просто использовать это в конце ..
источник
Ни
last_query()
илиget_compiled_select()
работает для меня, так что небольшое изменение кода Педру работает для меня просто отлично. Не включайте->get()
в свою сборку, это должно быть до -> get ()источник
Я пытаюсь ответить @ Chumillas и ответить @chhameed, но это не сработает, потому что sql неверен, поэтому я нашел новый подход, например:
echo $sql; flush(); exit;
вreturn $sql;
_compile_select
функцию доDB_active_rec.php
источник
Добавьте эту строку сразу после запроса, который хотите распечатать.
Пример:
$ query = $ this-> db-> query ('ВЫБРАТЬ * ИЗ таблицы WHERE условие');
// Добавляем эту строку.
var_dump ($ this-> db-> last_query ());
выход();
или
эхо $ this-> db-> last_query ();
источник
Я использую xdebug для просмотра этих значений в VSCode с соответствующим расширением и CI v2.x. Я добавляю выражение
$this->db->last_query()
в разделе просмотра, и я добавляюxdebugSettings
узел, подобный этим строкам, для получения значения без усечения в launch.json.И запустите мой отладчик с точкой останова и, наконец, просто выберите мое выражение и щелкните правой кнопкой мыши> скопировать значение.
источник
У меня была точно такая же проблема, и в конце концов я нашел решение. Мой запрос выглядит так:
Чтобы отобразить команду sql, все, что мне нужно было сделать, это создать переменную ($ resultstring) с тем же содержимым, что и мой запрос, а затем повторить ее, например:
<?php echo $resultstring = 'SELECT * FROM clients WHERE ' . $sql_where . ' AND ' . $sql_where2 . ' ORDER BY acconame ASC '; ?>
Оно работает!
источник
использовать
get_compiled_select()
для получения запроса вместо его заменыисточник
Я прочитал здесь все ответы, но не могу получить
на работу, это дало мне ошибку, например,
Итак, я удалил
protected
строку из файла ниже,\system\database\DB_active_rec.php
и она сработалаисточник