आपके नवीनतम संपादन ने प्रश्न को बहुत स्पष्ट कर दिया है, इसलिए मैं एक उत्तर का प्रयास करूंगा:इस अंतर का कारण प्लेसहोल्डर है।
दस्तावेज़ के रूप में यहां , प्लेसहोल्डर्स का उपयोग केवल क्वेरी में कुछ निश्चित स्थानों पर ही किया जा सकता है। विशेष रूप से:
अब आपने देखा होगा कि SELECT ? as x
ठीक तैयार करता है, लेकिन नहीं SELECT nr.x FROM (SELECT ? AS x) AS nr
. ऐसा क्यों है? वैसे इसे PHP के दस्तावेज़ पर एक अनाम लेखक
द्वारा सबसे अच्छी तरह से समझाया गया है , तो मुझे कॉपी/पेस्ट करने दें:
तो सीधे शब्दों में कहें:क्योंकि आप FROM
. में एक सबक्वेरी में प्लेसहोल्डर का उपयोग कर रहे हैं खंड, MySQL क्वेरी के निष्पादन योजना की गणना नहीं कर सकता है।
दूसरे शब्दों में, चूंकि आपकी क्वेरी हमेशा बदलती रहेगी, इसके लिए कोई "टेम्पलेट" तैयार नहीं किया जा सकता है।
इसलिए यदि आप वास्तव में इस क्वेरी का उपयोग करना चाहते हैं, तो आपको एक सामान्य (गैर-तैयार) क्वेरी का उपयोग करने की आवश्यकता है, या पीडीओ के नकली तैयार बयानों को वापस चालू करना होगा।
कहा जा रहा है, कृपया, टिप्पणी अनुभाग में दिए गए विभिन्न विकल्पों पर विचार करें। आप जो हासिल करने की कोशिश कर रहे हैं उसके लिए बहुत बेहतर समाधान हैं।