Comment imprimer le sql excuté juste après son exécution
-
-
Je sais qu'ilesttroptard,maispour référencefuture.Vouspouvez simplementfaire écho à l'instructionprepare avant de latransmettre à la requête.Ce serait sûrementplusfacile.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 réponses
- votes
-
- 2013-08-16
L'objet
$wpdb
a despropriétés définiespour cela: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;
Remarque: Tout d'abord,vous devez définir
define( 'SAVEQUERIES', true );
dans votrefichierwp-config.php
dans le dossier racine de WordPress./p>
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.-
hmmmais dansmon cas,iln'y a rien dans $ wpdb-> last_query.hmm but in my case there is nothing in $wpdb->last_query.
- 0
- 2013-08-16
- ravisoni
-
Avez-vous `defined ('SAVEQUERIES',true);` dans votre `wp-config.php` ou quelque chose comme`!defined ('SAVEQUERIES') AND defined ('SAVEQUERIES',true); `dans votre script?Sinon,celane fonctionnerapas.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
-
Oui,je pense que la requêtene fonctionnepas dutout cariln'y a rien deparamètreest $ 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
-
activez wp_debug alors,afin que vous obteniez deserreurs ou des avertissements,le cas échéant.turn on wp_debug then, so that you'll get errors or warning if any there.
- 1
- 2013-08-16
- Kumar
-
Erreur debase de données WordPress: [La requête était vide]WordPress database error: [Query was empty]
- 0
- 2013-08-16
- ravisoni
-
Essayezplutôt `$ wpdb->get_results ()`et jetez un œil à la documentation Codex sur `$ wpdb`.Try `$wpdb->get_results()` instead and take a look at the Codex documentation on `$wpdb`.
- 0
- 2013-08-16
- kaiser
-
Je sais que votre requête originale date d'il y a longtemps,maisil semble que vous rencontriez leproblème de lataille des colonnes.Justepourtoute autrepersonne qui recherche une solution à aucun résultat de requête sanserreur - soyez averti que wpdb seferme silencieusement,sansmessageni erreur,lorsqu'une colonne de votre requête dépasse lataille de la colonne de votrebase de données.Iln'y apresque aucunmoyen de voir que cela s'estproduit,et WordPress a étéimprudemment résistant (àmon humble avis)pour résoudre ceproblème.Il y a un courtpatch que vouspouvezmettre dans wpdb.php dans unenvironnement de développementpour rendre celabeaucoupplusfacile.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 Vouspourriez vouloir créer un lien vers lepatch?Oumieuxencore: l'ajouter dans une réponse?Ou [modifier] cette réponse?@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
J'ai répertorié 3 approchesici:
- Utilisation de
SAVEQUERIES
et impression detoutes les requêtesen pied depage - En utilisant
$wpdb->last_query
pourimprimer uniquement la dernière requêteexécutée,ceciest utilepour lesfonctions de débogage. - Utilisation d'unplugintel que Query Monitor.
Vous devrez l'ajouter dans votre wp-config.php
define('SAVEQUERIES', true);
Ensuite,dans lepied depage de votrethème,ajoutez ce 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 ?>
Ou si vous souhaitezimprimer uniquement la dernière requêteexécutée,vouspouvez l'utiliserjusteen dessous de votre appel defonction de requête
$wpdb
.global $wpdb; echo $wpdb->last_query;//lists only single query
Unetroisième approche consisterait à utiliser unplugin comme Query Monitor qui répertorieen détailtoutes les requêtesexécutées sur unepage,et d'autres détails qui lui sont associés comme lenombre de lignes qu'il renvoieet letemps d'exécution ou si c'est un lent requete. http://wordpress.org/plugins/query-monitor/
C'est unebonneidée d'utiliser ceplugin uniquement dans l'environnement DEVet ne doitpas être laissé activé sur un siteen direct. Deplus,Query Monitorpeutparfois causer desproblèmes avec votrepage,comme l'erreur 5XX sur votremodèle/page s'il y atrop d'erreurs.
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
Vous devez ajouter les deuxfonctions,sinon celane montrerajamais d'erreur
$wpdb->show_errors(); $wpdb->print_error();
Cettefonction vousmontrera uneerreur appropriée comme celle-ci
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
Je voulais ajouter que lameilleure réponse votéepar @kaisern'estpasentièrement correcte:
// Print last SQL query string $wpdb->last_query
Le retour de celui-ciest ARRAY ,pas une chaîne.Donc,pour afficher la dernière requête,vous devezfaire ceci:
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);
Je cherche unmoyenpar lequelje peuximprimer la requête SQLexécutéejuste après le:
Ce seraitformidable sije pouvais voir les valeurs de la requête.
Merci