Как распечатать запрос Joomla?

Предположим, вы создали запрос с помощью Joomla.

//Получить соединение db.
$ db = JFactory :: getDbo ();

//Создаем новый объект запроса.
$ query = $ db-> getQuery (true);

//Выберите все записи из таблицы профиля пользователя, где ключ начинается с «custom.».
//Заказываем его по полю заказа.
$ query-> select ($ db-> quoteName (массив ('user_id', 'profile_key', 'profile_value', 'ordering')));
$ Query- > из ($ db- > quoteName ( '#__ user_profiles'));
$ query-> where ($ db-> quoteName ('profile_key'). 'LIKE'. $ db-> quote ('\' custom.% \ ''));
$ query-> порядок («заказ ASC»);

//Сброс запроса с использованием нашего вновь заполненного объекта запроса.
$ Db- > SetQuery ($ запроса);

//Загрузите результаты как список объектов stdClass (подробнее см. В разделе «Получение данных»).
$ results = $ db-> loadObjectList ();

Пример отсюда: https://docs.joomla.org/Selecting_data_using_JDatabase

Есть ли команда распечатать инструкцию запроса (а не результаты, но фактический SQL)?

10 голосов | спросил Mat Kay 18 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 18 Sep 2015 02:10:48 +0300 2015, 02:10:48

5 ответов


13

вам нужно эхо __toString ()

эхо-сигнала ($ query- > __ ToString ());

вы можете узнать подробнее здесь

https://docs.joomla.org/API16:JDatabaseQuery/_toString

Надеюсь, что это поможет

ответил Piero Marsilio 18 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 18 Sep 2015 09:29:20 +0300 2015, 09:29:20
8

Вы также можете использовать функцию Joomla replacePrefix, которая выгружает запрос в формате, который может быть вставлен прямо в phpMyAdmin.

Вот пример:

$ db = JFactory :: getDbo ();

$ query = $ db-> getQuery (true);
$ Query- & Гт выберите ($ db- > quoteName ( 'что-то'))
      - > из ($ db- > quoteName ( '#__ контента'));
$ Db- > SetQuery ($ запроса);

//Дамп запроса
echo $ db-> replacePrefix ((string) $ query);

Выведет следующее:

SELECT `something` FROM` jos_content`
ответил Lodder 6 +03002015-10-06T18:18:02+03:00312015bEurope/MoscowTue, 06 Oct 2015 18:18:02 +0300 2015, 18:18:02
4

Вы также можете использовать собственный метод dump (): echo $ query-> dump ();

ответил Dmitry Rekun 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 21 Sep 2015 16:52:32 +0300 2015, 16:52:32
4

Объект JDatabaseQuery имеет функцию __ toString (), которая выводит запрос, чтобы вы могли:

echo $ db-> getQuery ();

Или, если вы хотите передать его функции, вы можете явно передать ее в строку сначала:

var_dump ((строка) $ db- > GetQuery ());
ответил Joomler 19 Jpm1000000pmTue, 19 Jan 2016 17:05:59 +030016 2016, 17:05:59
0

Функция отладки Joomla даст вам много информации о запросах, которые выполняются при загрузке вашего сайта.

ответил Klaus Veliu 20 AMpWed, 20 Apr 2016 09:16:23 +030016Wednesday 2016, 09:16:23

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132