it-swarm.com.de

So drucken Sie den ausgeführten SQL-Code direkt nach seiner Ausführung

Ich suche nach einer Methode, mit der ich die ausgeführte SQL-Abfrage direkt nach dem folgenden Befehl drucken kann:

$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)
            );

Dies wäre toll, wenn ich sehen kann, welche Werte in der Abfrage gehen.

Vielen Dank

22
ravisoni

Für das $wpdb-Objekt werden einige Eigenschaften festgelegt:

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

Beachten Sie, dass Sie das Ergebnis nur erhalten, wenn Sie defined( 'SAVEQUERIES', true ); in Ihrem wp-config.php eingestellt haben.

47
kaiser

Fügen Sie dies in Ihrer wp-config.php hinzu

 define('SAVEQUERIES', true);

Dann schreiben Sie in die Fußzeile Ihres Themas:

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

Auch können Sie verwenden

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

auf Ihrer Abfrageseite nach Ihrer Abfrage;

12
sven

Sie müssen beide Funktionen hinzufügen, andernfalls wird kein Fehler angezeigt

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

Diese Funktion zeigt Ihnen den richtigen Fehler wie diesen

 enter image description here 

3
Ketan Chaudhari

Ich wollte hinzufügen, dass die beste Antwort von @kaiser nicht ganz richtig ist:

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

Die Rückgabe istARRAY, keine Zeichenfolge. Um die letzte Abfrage auszugeben, sollten Sie dies tun:

echo 'Last query: '.var_export($wpdb->last_query, TRUE);
1
KestutisIT