Как распечатать выведенный sql сразу после его выполнения
-
-
Я знаю,что уже слишком поздно,но на будущее.Вы можете просто повторить оператор подготовки перед передачей его запросу.Конечно,было бы проще.I know it's too late, but for future reference. You can just echo prepare statement before passing it to query. It would be surely easier.
- 1
- 2016-10-20
- Maciej Paprocki
-
4 ответ
- голосов
-
- 2013-08-16
Объект
$wpdb
имеет для этого настраиваемые свойства:global $wpdb; // Print last SQL query string echo $wpdb->last_query; // Print last SQL query result echo $wpdb->last_result; // Print last SQL query Error echo $wpdb->last_error;
Примечание. Прежде всего вам необходимо установить
define( 'SAVEQUERIES', true );
в вашем файлеwp-config.php
в корневой папке WordPress.The
$wpdb
object has some properties getting set for that:global $wpdb; // Print last SQL query string echo $wpdb->last_query; // Print last SQL query result echo $wpdb->last_result; // Print last SQL query Error echo $wpdb->last_error;
Note: First of all you have to set
define( 'SAVEQUERIES', true );
in yourwp-config.php
file at root folder of WordPress.-
хм,но в моем случае в $ wpdb-> last_query ничего нет.hmm but in my case there is nothing in $wpdb->last_query.
- 0
- 2013-08-16
- ravisoni
-
Вы `определили ('SAVEQUERIES',true);` в своем `wp-config.php` или что-то вроде`!defined ('SAVEQUERIES') AND defined ('SAVEQUERIES',true); `в вашем скрипте?Иначе не получится.Have you `defined( 'SAVEQUERIES', true );` in your `wp-config.php` or something like `! defined( 'SAVEQUERIES' ) AND defined( 'SAVEQUERIES', true );` in your script? Else it won't work.
- 0
- 2013-08-16
- kaiser
-
Да,у меня есть,я думаю,что запрос вообще не выполняется,что y нет ничего,настройка $ wpdb-> last_query.:(Yes i have, I think the query is not running at all that y there is nothing setting is $wpdb->last_query. :(
- 0
- 2013-08-16
- ravisoni
-
затем включите wp_debug,чтобы получать сообщения об ошибках или предупреждениях,если таковые имеются.turn on wp_debug then, so that you'll get errors or warning if any there.
- 1
- 2013-08-16
- Kumar
-
Ошибка базы данных WordPress: [запрос был пуст]WordPress database error: [Query was empty]
- 0
- 2013-08-16
- ravisoni
-
Попробуйте вместо этого `$ wpdb->get_results ()` и посмотрите документацию Кодекса на `$ wpdb`.Try `$wpdb->get_results()` instead and take a look at the Codex documentation on `$wpdb`.
- 0
- 2013-08-16
- kaiser
-
Я знаю,что ваш исходный запрос был сделан очень давно,но похоже,что вы столкнулись с проблемой размера столбца.Просто для всех,кто ищет решение для отсутствия результатов запроса без ошибок - имейте в виду,что wpdb завершает работу без сообщений,без сообщений или ошибок,когда размер столбца в вашем запросе превышает размер столбца в вашей базе данных.Практически невозможно увидеть,что это произошло,и WordPress неосторожно сопротивлялся (IMHO) исправлению этого.Есть небольшой патч,который вы можете поместить в wpdb.php в среде разработки,чтобы сделать это намного проще.I know your original query was from a long time ago, but it sounds like you were hitting the column size issue. Just for anyone else who is searching for a solution to no query results with no error - be warned that wpdb exits silently, with no message or error, when a column in your query exceeds the size of the column in your database. There is almost no way to see this has happened, and WordPress have been carelessly resistant (IMHO) to fixing this. There is a short patch you can put into wpdb.php in a dev environment to make seeing this much easier.
- 1
- 2019-12-22
- Brian C
-
@BrianC Вы могли бы хотеть ссылку на патч?Или даже лучше: добавить это в ответ?Или [отредактировать] этот ответ?@BrianC You might want to link to the patch? Or even better: Add it in an answer? Or [edit] this answer?
- 0
- 2019-12-26
- kaiser
-
- 2013-08-16
Я перечислил здесь 3 подхода:
- Использование
SAVEQUERIES
и печать всех запросов в нижнем колонтитуле - Использование
$wpdb->last_query
для печати только последнего выполненного запроса,это полезно для функций отладки. - Использование плагина,например Query Monitor.
Вам нужно будет добавить это в свой wp-config.php
define('SAVEQUERIES', true);
Затем в нижнем колонтитуле вашей темы добавьте этот код:
<?php if (current_user_can('administrator')){ global $wpdb; echo "<pre>Query List:"; print_r($wpdb->queries); echo "</pre>"; }//Lists all the queries executed on your page ?>
Или,если вы хотите распечатать только последний выполненный запрос,вы можете использовать его чуть ниже вызова функции запроса
$wpdb
.global $wpdb; echo $wpdb->last_query;//lists only single query
Третий подход заключается в использовании такого плагина,как Query Monitor,который подробно перечисляет все запросы,выполненные на странице,и другие связанные с ним детали,такие как количество возвращаемых строк и время,затраченное на выполнение,или медленное выполнение запрос. http://wordpress.org/plugins/query-monitor/
Рекомендуется использовать этот плагин только в среде DEV,и его не следует оставлять активированным на действующем сайте. Кроме того,Query Monitor может иногда вызывать проблемы с вашей страницей,например,ошибка 5XX на вашем шаблоне/странице,если ошибок слишком много.
I've listed down 3 approaches in here:
- Using
SAVEQUERIES
and printing all the queries in footer - Using
$wpdb->last_query
to print just the latest query executed, this is useful for debugging functions. - Using a plugin like Query Monitor.
You'd need to add this in your wp-config.php
define('SAVEQUERIES', true);
Then in the footer of your theme add this code:
<?php if (current_user_can('administrator')){ global $wpdb; echo "<pre>Query List:"; print_r($wpdb->queries); echo "</pre>"; }//Lists all the queries executed on your page ?>
Or if you'd like to print just the last executed query, you can use this just below your
$wpdb
query function call.global $wpdb; echo $wpdb->last_query;//lists only single query
A 3rd approach would be to use a plugin like Query Monitor which lists all the queries executed on a page in detail, and other details associated with it like how many rows it returns and the time taken for execution or if it's a slow query. http://wordpress.org/plugins/query-monitor/
It's a good idea to use this plugin in DEV environment only and shouldn't be left activated on a live site. Also, Query Monitor can sometimes cause issues with your page, Like 5XX error on your template/page if there are too many errors.
-
- 2017-04-15
Вы должны добавить обе функции,иначе никогда не будет отображаться ошибка
$wpdb->show_errors(); $wpdb->print_error();
Эта функция покажет вам правильную ошибку,подобную этой
You have to add both functions,otherwise it will never show error
$wpdb->show_errors(); $wpdb->print_error();
This function will show you proper error like this this
-
- 2017-07-04
Я хотел добавить,что лучший ответ @kaiser,получивший одобрение,не совсем верен:
// Print last SQL query string $wpdb->last_query
Возвращает ARRAY ,а не строку.Итак,чтобы вывести последний запрос,вы должны сделать это:
echo 'Last query: '.var_export($wpdb->last_query, TRUE);
I wanted to add that the best up-voted answer by @kaiser is not fully correct:
// Print last SQL query string $wpdb->last_query
The return of it is ARRAY, not a string. So to output last query you should do this:
echo 'Last query: '.var_export($wpdb->last_query, TRUE);
Я ищу способ распечатать выполненный запрос sql сразу после:
Было бы здорово,если бы я мог видеть,какие значения используются в запросе.
Спасибо