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