Comment afficher une requête SQL exécutée dans une requête?

105

Je suis tombé sur une fonction qui affichait exactement le code SQL utilisé. Dans une boucle par exemple, mais je ne m'en souviens pas.

Quelqu'un peut-il me dire cette fonction?

Keith Donegan
la source

Réponses:

138

Bonjour Keith Donegan:

Si je comprends bien votre question, je pense que c’est ce que vous recherchez?

<?php echo $GLOBALS['wp_query']->request; ?>

$wp_queryest une variable globale qui contient la requête en cours exécutée par la boucle. Si vous exécutez le code ci-dessus à tout moment alors que la boucle est toujours active ou même juste après, elle devrait vous donner le code SQL de la boucle. Assurez-vous simplement de l'inspecter avant de laisser fonctionner quelque chose d'autre qui l'utilise à query_posts()nouveau.

Mike Schinkel
la source
Comment obtenir des requêtes de $wpdb? $GLOBALS['wpdb']->requestne fonctionne pas
mpsbhat
1
Fonctionne même sur une requête personnalisée, $my_query = new WP_Query([ /* ...some args... */ ]);=>$my_query->request
jave.web Le
58

Si vous avez exécuté une requête basée sur WP_Query, c'est ceci:

$customPosts = new WP_Query($yourArgs);
echo "Last SQL-Query: {$customPosts->request}";
Jusqu'à
la source
21

Si vous êtes seulement intéressé par les boucles, voici ce que j'utilise habituellement:

add_filter( 'posts_request', 'dump_request' );

function dump_request( $input ) {

    var_dump($input);

    return $input;
}
Rarst
la source