जैसा कि मास्टो सामान्य रूप से एसक्यूएल में प्लेसहोल्डर सीधे आपके पैरामीटर के साथ प्रतिस्थापित नहीं होते हैं। पैरामीटरयुक्त एसक्यूएल का पूरा बिंदु एसक्यूएल है जो प्लेसहोल्डर्स को डेटाबेस इंजन में एक बार पार्स करने के लिए पास किया जाता है और फिर यह पैरामीटर प्राप्त करता है।
आईड्सएसएल नोट्स के रूप में आप एसक्यूएल को कथन या कनेक्शन हैंडल से वापस प्राप्त कर सकते हैं और आप ParamValues से पैरामीटर भी पुनर्प्राप्त कर सकते हैं। यदि आप इसे स्वयं नहीं करना चाहते हैं तो आप केवल SQL और पैरामीटर लॉग इन करने के लिए DBIx::Log4perl जैसे कुछ का उपयोग कर सकते हैं। DBIX_L4P_LOG_DELAYBINDPARAM जो कुछ इस तरह आउटपुट देखें:
DEBUG - prepare(0.1): 'insert into mje values(?,?)'
DEBUG - $execute(0.1) = [{':p1' => 1,':p2' => 'fred'},undef];
बेशक
के रूप में यह का उपयोग करता है के लिए लॉग :: Log4perl आप "डीबग -" छोड़ सकते हैं अगर आप चाहते हैं। डीबीआईएक्स :: लॉग 4perl here का उपयोग करने के लिए एक छोटा सा ट्यूटोरियल है।
आप किसी भी डीबीडी के साथ डीबीआईएक्स :: लॉग 4perl का उपयोग करने में सक्षम होना चाहिए और यदि आप इसे किसी कारण से आरटी नहीं कर सकते हैं और मैं इसे देख लूंगा।
यदि आप डीबीआईएक्स :: लॉग 4perl और डीबीआई ट्रेस विकल्पों के साथ नहीं जाना चाहते हैं तो आपकी जरूरतों के अनुरूप नहीं है, आप डीबीआई की तैयारी/चयन */निष्पादन विधियों के लिए कॉलबैक लिख सकते हैं और जो कुछ भी आप उन्हें पसंद करते हैं उसे इकट्ठा कर सकते हैं।
संभावित डुप्लिकेट [मैं डीबीआई को पैराम्स समेत सभी प्रश्नों को कैसे लॉग कर सकता हूं?] (Http://stackoverflow.com/questions/19703521/how-can-i-make-dbi-log-all-queries- समावेश- पैराम्स) – Jake
@ जेक इस प्रश्न को दूसरे प्रश्न से 4 साल पहले पूछा गया था, इस सवाल के बेहतर जवाब हैं, (मेरी राय में)। यही कारण है कि मैंने दूसरे प्रश्न को डुप्लिकेट और बंद करने के लिए उम्मीदवार के रूप में चिह्नित किया है। – aidan