So drucken Sie die exputierte SQL direkt nach ihrer Ausführung
-
-
Ich weiß,dasses zu spätist,aberfür zukünftige Referenz.Sie können die Prepare-Anweisungeinfach wiederholen,bevor Sie sie an die Abfrage übergeben.Es wäre sicherlicheinfacher.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 Antworten
- Stimmen
-
- 2013-08-16
Für das Objekt
$wpdb
werdeneinige Eigenschaftenfestgelegt: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;
Hinweis: Zunächstmüssen Sie
define( 'SAVEQUERIES', true );
in Ihrer Dateiwp-config.php
im Stammordner von WordPressfestlegen.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.-
hmm aberin meinem Fallistnichtsin $ wpdb-> last_query.hmm but in my case there is nothing in $wpdb->last_query.
- 0
- 2013-08-16
- ravisoni
-
Haben Sie "definiert" ("SAVEQUERIES",true),"in Ihrer" wp-config.php "oder so ähnlich"!definiert ('SAVEQUERIES') UND definiert ('SAVEQUERIES',true); `in Ihrem Skript?Sonst wirdesnichtfunktionieren.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
-
Ja,ich denke,die Abfrage wird überhauptnicht ausgeführt,undesgibt keine Einstellung: $ 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
-
Schalten Sie dann wp_debugein,damit dort Fehler oder Warnungen angezeigt werden.turn on wp_debug then, so that you'll get errors or warning if any there.
- 1
- 2013-08-16
- Kumar
-
WordPress-Datenbankfehler: [Abfrage war leer]WordPress database error: [Query was empty]
- 0
- 2013-08-16
- ravisoni
-
Versuchen Sie stattdessen "$ wpdb->get_results ()" und sehen Sie sich die Codex-Dokumentation zu "$ wpdb" an.Try `$wpdb->get_results()` instead and take a look at the Codex documentation on `$wpdb`.
- 0
- 2013-08-16
- kaiser
-
Ich weiß,dass Ihre ursprüngliche Abfrage von vor langer Zeit stammt,aberes scheint,als hätten Sie das Problemmit der Spaltengrößegelöst.Nurfür alle anderen,dienacheiner Lösungfürfehlerfreie Abfrageergebnisse suchen - seien Siegewarnt,dass wpdb ohne Meldung oder Fehler stillschweigendbeendet wird,wenneine Spaltein Ihrer Abfrage die Größe der Spaltein Ihrer Datenbank überschreitet.Esgibt fast keine Möglichkeit zu sehen,dass diesgeschehenist,und WordPress warnachlässig (IMHO) dagegen,dies zubeheben.Esgibt einen kurzen Patch,den Siein einer Entwicklungsumgebungin wpdb.phpeinfügen können,um das Anzeigen zu vereinfachen.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 Vielleichtmöchten Sieeinen Link zum Patcherstellen?Odernochbesser: Fügen Sieesin eine Antwortein?Oder diese Antwort [bearbeiten]?@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
Ich habe hier drei Ansätze aufgelistet:
- Verwenden Sie
SAVEQUERIES
und drucken Sie alle Abfragenin der Fußzeile - Wenn Sie
$wpdb->last_query
verwenden,umnur die zuletzt ausgeführte Abfrage zu drucken,ist diesnützlichfür Debugging-Funktionen. - Verwendeneines Plugins wie Query Monitor.
Siemüssen diesin Ihrer wp-config.php
hinzufügendefine('SAVEQUERIES', true);
Fügen Sie dannin der Fußzeile Ihres Themas denfolgenden Code hinzu:
<?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 ?>
Oder wenn Sienur die zuletzt ausgeführte Abfrage druckenmöchten,können Sie diese direkt unter Ihrem
$wpdb
-Abfragefunktionsaufruf verwenden.global $wpdb; echo $wpdb->last_query;//lists only single query
Ein dritter Ansatz wäre die Verwendungeines Plugins wie Query Monitor,das alle aufeiner Seite ausgeführten Abfragenim Detail auflistet und andere damit verbundene Details wie die Anzahl der zurückgegebenen Zeilen und diefür die Ausführungbenötigte Zeit oder wennes langsamist Abfrage. http://wordpress.org/plugins/query-monitor/
Esisteine gute Idee,dieses Pluginnurin der DEV-Umgebung zu verwenden und solltenicht aufeiner Live-Site aktiviertbleiben. Außerdem kann der Abfragemonitormanchmal Problememit Ihrer Seite verursachen,z. B. 5XX-Fehlerin Ihrer Vorlage/Seite,wenn zu viele Fehler vorliegen.
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
Siemüssenbeide Funktionen hinzufügen,sonst wirdnie ein Fehler angezeigt
$wpdb->show_errors(); $wpdb->print_error();
Diese Funktion zeigt Ihnen den richtigen Fehler wie diesen
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
Ich wollte hinzufügen,dass diebeste Antwort von @kaisernichtganz richtigist:
// Print last SQL query string $wpdb->last_query
Die Rückgabeist ARRAY ,keine Zeichenfolge.Um die letzte Abfrage auszugeben,sollten Sie Folgendestun:
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);
Ich suchenacheiner Möglichkeit,die ausgeführte SQL-Abfrage direktnach dem:
zu druckenDas wäregroßartig,wennich sehen könnte,welche Wertein der Abfrageenthalten sind.
Danke