Comment imprimer le sql excuté juste après son exécution

21

Je cherche un moyen d’imprimer la requête SQL exécutée juste après le:

$wpdb->query(
                $wpdb->prepare("INSERT 
                                INTO tbl_watchprosite SET 
                                keywords=%s,url_to_post=%s,description=%s,
                                date_captured=%s,crawl_id=%d,
                                image_main=%s,images=%s,brand=%s,
                                series=%s,model=%s,condition=%s,box=%s,
                                papers=%s,year=%s,case_size=%s,status=%s,listed=%s,
                                asking_price=%s,retail_price=%s,payment_info=%s,forum_id=%d",
                                $this->getForumSettings()->search_meta,$element->href,$post_meta['description'],current_time('mysql'),$cid,$post_meta['image_main'],$images,$post_meta[0],$post_meta[1],$post_meta[2],$post_meta[3],$post_meta[4],$post_meta[5],$post_meta[6],$post_meta[7],$status,$post_meta[9],$post_meta[10],$post_meta[11],$this->getForumSettings()->ID)
            );

Ce serait formidable si je peux voir quelles valeurs vont dans la requête.

Merci

    
posée ravisoni 16.08.2013 - 13:04

4 réponses

43

L'objet $wpdb a des propriétés définies pour cela:

// Print last SQL query string
$wpdb->last_query
// Print last SQL query result
$wpdb->last_result
// Print last SQL query Error
$wpdb->last_error

Notez que vous n'obtiendrez le résultat que lorsque vous aurez défini defined( 'SAVEQUERIES', true ); dans votre wp-config.php .

    
réponse donnée kaiser 16.08.2013 - 13:08
10

Ajoutez ceci dans votre wp-config.php

 define('SAVEQUERIES', true);

Ensuite, dans le pied de page de votre thème, mettez ceci:

 <?php
  if (current_user_can('administrator')){
   global $wpdb;
   echo "<pre>";
   print_r($wpdb->queries);
   echo "</pre>";
 }//Lists all the queries executed on your page
?>

Vous pouvez aussi utiliser

global $wpdb;
echo $wpdb->last_query;//lists only single query

dans votre page de requête après votre requête;

    
réponse donnée sven 16.08.2013 - 13:15
3

Vous devez ajouter les deux fonctions, sinon l'erreur ne sera jamais affichée

$wpdb->show_errors(); 
$wpdb->print_error();

Cette fonction vous montrera l'erreur appropriée comme ceci

    
réponse donnée Ketan Chaudhari 15.04.2017 - 13:04
1

Je voulais ajouter que la meilleure réponse positive de @kaiser au vote positif n'est pas tout à fait correcte:

// Print last SQL query string
$wpdb->last_query

Il renvoie ARRAY , et non une chaîne. Donc, pour afficher la dernière requête, procédez comme suit:

echo 'Last query: '.var_export($wpdb->last_query, TRUE);
    
réponse donnée KestutisIT 04.07.2017 - 22:36

Lire d'autres questions sur les étiquettes