इसके निष्पादन के ठीक बाद उत्क्रमित वर्ग को कैसे मुद्रित किया जाए


26

मैं एक ऐसा तरीका खोज रहा हूँ जिसके द्वारा मैं निम्नलिखित के बाद निष्पादित sql क्वेरी को प्रिंट कर सकूँ:

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

यह बहुत अच्छा होगा यदि मैं देख सकता हूं कि क्वेरी में क्या मान जा रहे हैं।

धन्यवाद


1
मुझे पता है कि यह बहुत देर हो चुकी है, लेकिन भविष्य के संदर्भ के लिए। आप इसे क्वेरी में पास करने से पहले केवल स्टेटमेंट तैयार कर सकते हैं। यह निश्चित रूप से आसान होगा।
मैकीज पपरोकी

जवाबों:


51

$wpdbवस्तु कुछ गुण है कि के लिए सेट हो रही है:

global $wpdb;

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

नोट: सबसे पहले आपको define( 'SAVEQUERIES', true );अपनी wp-config.phpफाइल को वर्डप्रेस के रूट फोल्डर में सेट करना होगा ।


हम्म लेकिन मेरे मामले में $ wpdb-> last_query में कुछ भी नहीं है।
राविसन

आप defined( 'SAVEQUERIES', true );अपने में wp-config.phpकी तरह या कुछ और ! defined( 'SAVEQUERIES' ) AND defined( 'SAVEQUERIES', true );अपनी स्क्रिप्ट में? और यह काम नहीं करेगा।
kaiser

हां मेरे पास है, मुझे लगता है कि क्वेरी बिल्कुल भी नहीं चल रही है कि y कुछ भी सेट नहीं है $ wpdb-> last_query है। :(
रविवि

1
फिर wp_debug चालू करें, ताकि आपको कोई भी त्रुटि या चेतावनी मिल जाए।
कुमार

WordPress डेटाबेस त्रुटि: [क्वेरी खाली थी]
ravisoni

14

मैंने यहां 3 दृष्टिकोण सूचीबद्ध किए हैं:

  1. SAVEQUERIESपाद लेख में सभी प्रश्नों का उपयोग और मुद्रण
  2. $wpdb->last_queryनिष्पादित नवीनतम क्वेरी को प्रिंट करने के लिए उपयोग करना , यह डीबगिंग फ़ंक्शन के लिए उपयोगी है।
  3. क्वेरी मॉनिटर जैसे प्लगइन का उपयोग करना।

आपको इसे अपने wp-config.php में जोड़ना होगा

 define('SAVEQUERIES', true);

फिर अपने विषय के पाद लेख में यह कोड जोड़ें:

 <?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
?>

या यदि आप अंतिम निष्पादित क्वेरी को प्रिंट करना चाहते हैं, तो आप अपने $wpdbक्वेरी फ़ंक्शन कॉल के ठीक नीचे इसका उपयोग कर सकते हैं ।

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

एक तीसरा दृष्टिकोण क्वेरी मॉनिटर जैसे एक प्लगइन का उपयोग करना होगा जो एक पृष्ठ पर निष्पादित सभी प्रश्नों को विस्तार से सूचीबद्ध करता है, और इसके साथ जुड़े अन्य विवरण जैसे कि यह कितनी पंक्तियाँ देता है और निष्पादन के लिए लिया गया समय या यदि यह एक धीमी क्वेरी है। http://wordpress.org/plugins/query-monitor/

केवल DEV परिवेश में इस प्लगइन का उपयोग करना एक अच्छा विचार है और इसे लाइव साइट पर सक्रिय नहीं छोड़ा जाना चाहिए। साथ ही, क्वेरी मॉनिटर कभी-कभी आपके पृष्ठ के साथ समस्याएँ पैदा कर सकता है, जैसे आपके टेम्पलेट / पृष्ठ पर 5XX त्रुटि यदि बहुत अधिक त्रुटियाँ हैं।


अजाक्स आरंभ किए गए प्रश्न कैसे प्राप्त करें?
इसकी चकाचौंध

आप ajax एक्शन हैंडलर फ़ंक्शन में समान प्रिंट कर सकते हैं।
कुमार

3

आपको दोनों फ़ंक्शन को जोड़ना होगा, अन्यथा यह कभी भी त्रुटि नहीं दिखाएगा

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

यह फ़ंक्शन आपको इस तरह उचित त्रुटि दिखाएगा

यहाँ छवि विवरण दर्ज करें


1

मैं जोड़ना चाहता था कि @kaiser द्वारा सबसे अच्छा अप-वोट किया गया उत्तर पूरी तरह से सही नहीं है:

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

इसकी वापसी ARRAY है , न कि एक स्ट्रिंग। तो अंतिम क्वेरी को आउटपुट करने के लिए आपको यह करना चाहिए:

echo 'Last query: '.var_export($wpdb->last_query, TRUE);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.