संक्षेप में, मेरे पास एक मान है कि मुझे अपने SQL क्वेरी में दो बार कॉल करना होगा। इस प्रकार, क्या बयान में समान नामित प्लेसहोल्डर का पुन: उपयोग करना संभव है। SELECT :Param FROM Table WHERE Column = :Param
, फिर बस bindValue (": परम"), और दोनों के लिए मूल्य होना चाहिए: पैरा?पीडीओ पैरामीटरेटेड क्वेरी - प्लेसहोल्डर नामक पुन: उपयोग?
उत्तर
PDO::prepare कहा गया है कि "यदि आप एक तैयार बयान में दो बार एक ही नाम के एक नामित पैरामीटर मार्कर का उपयोग नहीं कर सकते हैं", इसलिए मुझे लगता है कि यह है कि एक तो कोई है।
दस्तावेज़ पूरी तरह से सही नहीं हैं। यदि 'पीडीओ :: ATTR_EMULATE_PREPARES'' सत्य 'है, पीडीओ * करता है * नाम पैरामीटर मार्करों का पुन: उपयोग करने का समर्थन करता है। – Mike
ऐसा लगता है कि किसी ने दस्तावेज़ अपडेट किए हैं। अब यह कहता है "जब तक इम्यूलेशन मोड चालू नहीं होता है, तब तक आप एक ही नाम के नामित पैरामीटर मार्कर का उपयोग एक ही वक्त में नहीं कर सकते हैं।" – Mike
आप आंशिक रूप से सही हैं। हालांकि 'चयन करें: परम' असंभव है, क्योंकि आप टेबल/कॉलम को बाध्य नहीं कर सकते हैं। Http://stackoverflow.com/q/182287/ देखें –
पुन: उपयोग के अलावा, यहां मुख्य मुद्दा यह है कि आप गतिशील रूप से कॉल नामों को बदलने की कोशिश कर रहे हैं।
इस उत्तर एक अनाम उपयोगकर्ता द्वारा http://php.net/manual/en/pdo.prepare.php पर पोस्ट:
सोच क्यों चारों ओर एक प्लेसहोल्डर, गलत है के उद्धरण को जोड़ने और तुम क्यों तालिका या स्तंभ नाम के लिए प्लेसहोल्डर उपयोग नहीं कर सकते उन करने के लिए:
प्लेसहोल्डर्स कथन कार्य कैसे तैयार करते हैं, इस बारे में एक आम गलतफहमी है: उन्हें आसानी से प्रतिस्थापित नहीं किया गया है (बच निकला) स्ट्रिंग्स, और परिणामी एसक्यूएल निष्पादित। इसके बजाय, एक डीबीएमएस करने के लिए कहा "तैयार" एक बयान है कि यह कैसे जो टेबल्स और सूचियों को यह होगा उपयोग सहित कि क्वेरी, पर अमल होगा के लिए एक पूर्ण क्वेरी योजना है, जो कि कैसे आप में भरने की परवाह किए बिना ही होगा साथ आता है प्लेसहोल्डर्स।
योजना "My_table से नाम चुनें जहां आईडी =: मूल्य" के लिए ": मूल्य", लेकिन मालूम होता है समान ही जो कुछ भी आप के लिए स्थानापन्न हो जाएगा "से नाम चुनें: तालिका कहां आईडी =: मूल्य" नहीं कर सकते योजना बनाई जाए, क्योंकि डीबीएमएस को पता नहीं है कि आप वास्तव में किस तालिका से चयन कर रहे हैं।
यहां तक कि जब का उपयोग कर "नकल करते तैयार करता है", पीडीओ आप कहीं भी प्लेसहोल्डर का उपयोग करें, क्योंकि इस पर काम करने के लिए होगा जाने नहीं दे सकता कि तुम क्या मतलब: करता है "का चयन करें: से some_table foo" ": foo" होने जा रहा है मतलब कॉलम संदर्भ, या एक शाब्दिक स्ट्रिंग?
जब आपकी क्वेरी गतिशील कॉलम संदर्भ का उपयोग कर रही है, तो आपको तालिका में मौजूद कॉलम को स्पष्ट रूप से सफेद-सूचीबद्ध करना चाहिए, उदा। डिफॉल्ट में फेंक दिए गए अपवाद के साथ एक स्विच स्टेटमेंट का उपयोग करना: खंड।
यदि आप PDO::ATTR_EMULATE_PREPARES = true
सेट करते हैं तो आप कर सकते हैं।
उदा। $connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
।
यदि आप लार्वेल का उपयोग कर रहे हैं तो आप इसे में options
सरणी में सेट कर सकते हैं। जैसे PDO::ATTR_EMULATE_PREPARES => true
- 1. PHP पीडीओ प्लेसहोल्डर
- 2. PHP पीडीओ बुफर्ड क्वेरी समस्या
- 3. पीडीओ "WHERE ... IN" क्वेरी
- 4. सी # पैरामीटरेटेड क्वेरी MySQL 'इन' क्लॉज
- 5. लुसीन क्वेरी ऑब्जेक्ट्स का पुन: उपयोग
- 6. पैरामीटरेटेड एसक्यूएल कॉलम?
- 7. जावा में पैरामीटरेटेड स्ट्रिंग्स
- 8. के लिए एक MySQL पीडीओ क्वेरी
- 9. PHP पीडीओ तैयार कथन क्वेरी रिकॉर्ड
- 10. PHP पीडीओ तैयार कथन - MySQL LIKE क्वेरी
- 11. पीडीओ
- 12. पीडीओ mysql क्वेरी से बहुत धीमी है?
- 13. पीडीओ क्वेरी बाध्य डेटा के साथ स्ट्रिंग
- 14. बहु-कथन क्वेरी में PHP पीडीओ त्रुटि
- 15. पीडीओ
- 16. पीडीओ
- 17. पीडीओ
- 18. जिस तरह से पीडीओ parametrized क्वेरी काम करता है
- 19. एसक्यूएल में एक उप क्वेरी का पुन: उपयोग कैसे करें?
- 20. पीडीओ
- 21. पीडीओ
- 22. पैरामीटरेटेड सिंगलटन पैटर्न
- 23. WPF में पैरामीटरेटेड शैली/टेम्पलेट?
- 24. Mysql - पुन: उपयोग परिकलित मानों
- 25. पीडीओ
- 26. सी ++ पाइप नामक खिड़कियों का उपयोग
- 27. पीडीओ
- 28. संपत्ति प्लेसहोल्डर
- 29. प्लेसहोल्डर ड्रॉपडाउन
- 30. सी ++ 11 static_assert: पैरामीटरेटेड त्रुटि संदेश
आप इसे अभी क्यों नहीं देखते? पीडीओ :: तैयार करता है हां और पीडीओएसटेमेंट :: निष्पादित करता है कि आपको ड्राइवर पर निर्भर डीबी कर्सर को बंद करने की आवश्यकता हो सकती है। –
मैं इसे करने की कोशिश की, मैं एक त्रुटि हो रही है, लेकिन मैं समझ मैं कुछ और गलत कर रहा था। दस्तावेज़ों में कुछ भी नहीं मिला (पीडीओ :: बिंदपाराम देख रहा था)। पीडीओ में :: हालांकि तैयार यह पाया जाता है, सही दिशा की ओर इशारा करते के लिए धन्यवाद! – gamers2000
एफवाईआई - यह वास्तव में मेरे प्रश्न का भी उत्तर दिया। 1 अप आप – meteorainer