"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > PDO द्वारा तैयार किया गया विवरण LIKE क्वेरी के साथ परिणाम लौटाने में विफल क्यों होता है?

PDO द्वारा तैयार किया गया विवरण LIKE क्वेरी के साथ परिणाम लौटाने में विफल क्यों होता है?

2024-11-03 को प्रकाशित
ब्राउज़ करें:554

Why Does PDO Prepared Statement Fail to Return Results with LIKE Query?

PDO ने PHP में स्टेटमेंट तैयार किया: MySQL जैसी क्वेरीज़ के साथ समस्याएं

MySQL के साथ PHP की PDO क्लास पैरामीटरयुक्त क्वेरीज़ के साथ SQL स्टेटमेंट निष्पादित करने के लिए एक तंत्र प्रदान करती है , सुरक्षा और प्रदर्शन में सुधार। हालाँकि, LIKE क्वेरी का उपयोग करते समय उपयोगकर्ताओं को कठिनाइयों का सामना करना पड़ सकता है। पीडीओ का उपयोग करना:

चयन करें * से एच.एस जहां hs_text "%searchTerm%" जैसा है

उपयोगकर्ता पा सकते हैं कि कोई परिणाम नहीं लौटाया गया है।

SELECT *
FROM hs
WHERE hs_text LIKE "%searchTerm%"

समस्या यहीं है खोज शब्द का गलत पैरामीटरीकरण। PHP में, तैयार किए गए स्टेटमेंट नामित प्लेसहोल्डर का उपयोग करते हैं, जिसके लिए अलग सिंटैक्स की आवश्यकता होती है। LIKE क्वेरी के लिए सही मानकीकरण है:

$prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));

स्पष्टीकरण:

$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));

यह दृष्टिकोण गलत है क्योंकि यह अनावश्यक दोहरे उद्धरण चिह्न जोड़ता है।

जहां hs_text LIKE CONCAT(\'%\', ?, \' %\') $ret = $prep->निष्पादित करें(सरणी($searchTerm)); // गलत

क्वेरी के भीतर खोज शब्द को लपेटने के लिए CONCAT का उपयोग करना पैरामीटराइजेशन के लिए आवश्यक नहीं है।

WHERE hs_text LIKE :searchTerm
$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));  // Incorrect
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3