सब मैं करना चाहता हूँ एक प्रश्नSQLite: मूल्यों का बाँध सूची "कहां में col (: पी आर एम)" के लिए
SELECT * FROM table WHERE col IN (110, 130, 90);
की तरह भेजने तो मैं
SELECT * FROM table WHERE col IN (:LST);
तो निम्न कथन तैयार मैं
sqlite_bind_text(stmt, 1, "110, 130, 90", -1, SQLITE_STATIC);
का उपयोग दुर्भाग्य से यह हो जाता है
SELECT * FROM table WHERE col IN ('110, 130, 90');
और बेकार है (दो अतिरिक्त सिंगल कोट्स नोट करें)। मैंने स्ट्रिंग में अतिरिक्त 'डालने की कोशिश की है लेकिन वे भाग गए हैं। मुझे बचने से रोकने का विकल्प नहीं मिला या पाठ को सिंगल कोट्स से संलग्न होने से रोक दिया गया। आखिरी बात जो मैं सोच सकता हूं वह तैयार कथन का उपयोग नहीं कर रहा है, लेकिन मैं इसे केवल अंतिम विकल्प के रूप में ले जाऊंगा। क्या तुम्हारे पास कोई विचार या सुझाव है?
धन्यवाद
संपादित करें:
पैरामीटर की संख्या, गतिशील है, इसलिए यह तीन नंबर हो सकता है, ऊपर के उदाहरण के रूप में, एक या एक से बारह।
आपके उत्तर के लिए धन्यवाद। मैंने इसे अपने मूल पोस्ट (बस संपादित) में उल्लेख नहीं किया है, लेकिन पैरामीटर की संख्या गतिशील है। मैं वास्तव में अभी भी अपना उत्तर "संभव नहीं" के रूप में लेता हूं, जिसका अर्थ है कि मैं बस तैयार कथन का उपयोग नहीं कर सकता। – Sebastian
नहीं, सेबेस्टियन, मेरा सुझाव गतिशील रूप से पैरामीटर की एक चर संख्या के साथ एक SQL कथन का निर्माण करता है और फिर प्रत्येक पैरामीटर के लिए एक लूप में sqlite_bind_in को कॉल करता है। यह आपके लिए काम करना चाहिए। मैं जवाब में छद्म कोड जोड़ दूंगा। –
sql_bind_ को कॉल करने में सक्षम होने के लिए * पहले sql_prepare को कॉल करने की आवश्यकता है। मुझे क्वेरी बनाने, तैयार करने, निष्पादित करने और अंतिम रूप देने के दौरान सीधे पैरामीटर डालने के बजाय गतिशील रूप से एक कथन बनाने, इसे तैयार करने, बांधने, निष्पादित करने और अंतिम रूप देने का बिंदु दिखाई नहीं देता है। हर बार जब मैं क्वेरी निष्पादित करना चाहता हूं तो मुझे sql_prepare को कॉल करने की आवश्यकता होगी और यही वह है जिसे मैं सहेजना और केवल एक बार करना चाहता हूं। – Sebastian