PDO के साथ "WHERE... IN" क्वेरीज़ को संभालना
डेटाबेस एक्सेस के लिए PDO का उपयोग करते समय, "WHERE... IN" के साथ क्वेरीज़ को प्रबंधित करना IN" खंड चुनौती उत्पन्न कर सकते हैं। निम्नलिखित परिदृश्य पर विचार करें: आपको चेक किए गए फॉर्म आइटमों की सूची के आधार पर डेटाबेस तालिका से प्रविष्टियों को हटाने की आवश्यकता है, जिसे परिवर्तनीय लंबाई और सामग्री के साथ "$idlist" के रूप में दर्शाया गया है (उदाहरण के लिए, '260,201,221,216,217,169,210,212,213')।
प्रारंभ में, नीचे दी गई क्वेरी की तरह एक क्वेरी का उपयोग करना प्रतीत हो सकता है तार्किक:
$query = "DELETE from `foo` WHERE `id` IN (:idlist)";
हालाँकि, यह दृष्टिकोण केवल पहली आईडी को हटाता है। अल्पविराम और उसके बाद की आईडी को गलती से नजरअंदाज कर दिया जाता है।
इस समस्या को दूर करने के लिए, पीडीओ में तैयार बयानों के व्यवहार को समझना महत्वपूर्ण है। मानों को क्रमांकित या नामित पैरामीटर का उपयोग करके प्लेसहोल्डर्स से जोड़ा जा सकता है। "कहां... IN" क्वेरी के लिए, सूची में प्रत्येक आईडी का अपना प्लेसहोल्डर होना चाहिए।
समाधान के लिए एक गतिशील दृष्टिकोण की आवश्यकता है:
$idlist = array('260', '201', '221', '216', '217', '169', '210', '212', '213');
$questionmarks = str_repeat("?,", count($idlist) - 1) . "?";
$stmt = $dbh->prepare("DELETE FROM `foo` WHERE `id` IN ($questionmarks)");
इसके बाद, प्रत्येक आईडी को संबंधित प्रश्न चिह्न से बांधें:
for ($i = 0; $i bindParam($i 1, $idlist[$i]);
}
यह विधि सुनिश्चित करती है कि सूची में प्रत्येक आइटम एक प्लेसहोल्डर से ठीक से जुड़ा हुआ है, जिससे क्वेरी को इच्छित रिकॉर्ड को सफलतापूर्वक हटाने की अनुमति मिलती है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3