実行直後に実行されたSQLを出力する方法
-
-
手遅れだとは思いますが、今後の参考のために.クエリに渡す前に、prepareステートメントをエコーするだけです.きっと簡単でしょう.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;
注:まず、WordPressのルートフォルダーにある
define( 'SAVEQUERIES', true );
ファイルでwp-config.php
を設定する必要があります.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
-
`wp-config.php`または`のようなもので `defined( 'SAVEQUERIES'、true);`を実行しましたか?スクリプト内の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
-
はい、あります.クエリはまったく実行されていないと思います.$ 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`のCodexドキュメントを見てください.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
を使用して、実行された最新のクエリのみを出力します.これは、関数のデバッグに役立ちます. - クエリモニターなどのプラグインを使用する.
これを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
3番目のアプローチは、ページで実行されたすべてのクエリを詳細に一覧表示するQuery Monitorのようなプラグインを使用することです.また、返される行数や実行にかかる時間、遅い場合など、それに関連するその他の詳細も表示されます.クエリ. http://wordpress.org/plugins/query-monitor/
このプラグインはDEV環境でのみ使用することをお勧めします.ライブサイトでは、アクティブのままにしないでください.また、クエリモニターは、エラーが多すぎる場合にテンプレート/ページで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クエリを:
の直後に出力する方法を探しています.クエリでどのような値が使用されているかを確認できれば、これはすばらしいことです.
ありがとう