वर्डप्रेस में IN() कंडीशन के साथ तैयार स्टेटमेंट को संभालना
वर्डप्रेस एसक्यूएल इंजेक्शन हमलों से बचाने और क्वेरी प्रदर्शन में सुधार करने के लिए तैयार स्टेटमेंट प्रदान करता है। हालाँकि, एक स्ट्रिंग में एकाधिक मानों के साथ IN() स्थिति का उपयोग करना चुनौतियाँ पेश कर सकता है।
समस्या विवरण:
निम्नलिखित स्थिति पर विचार करें:
$villes = '"paris","fes","rabat"'; $sql = 'SELECT distinct telecopie FROM `comptage_fax` WHERE `ville` IN(%s)'; $query = $wpdb->prepare($sql, $villes);
यह कोड स्ट्रिंग से ठीक से नहीं निकलता है, जिसके परिणामस्वरूप एकल स्ट्रिंग में डबल कोट्स बच जाते हैं:
SELECT distinct telecopie FROM `comptage_fax` WHERE `ville` IN('\"paris\",\"fes\",\"rabat\"')
समाधान:
सही ढंग से वर्डप्रेस में एकाधिक मानों के साथ एक तैयार कथन लागू करें, इन चरणों का पालन करें:
// Create an array of the values to use in the list $villes = array('paris', 'fes', 'rabat'); // Generate the SQL statement. // Number of %s items based on length of $villes array $sql = " SELECT DISTINCT telecopie FROM `comptage_fax` WHERE `ville` IN(" . implode(', ', array_fill(0, count($villes), '%s')) . ") "; // Call $wpdb->prepare passing the values of the array as separate arguments $query = call_user_func_array(array($wpdb, 'prepare'), array_merge(array($sql), $villes));
PHP फ़ंक्शंस प्रयुक्त:
यह दृष्टिकोण सुनिश्चित करता है कि $villes में मान ठीक से बच गए हैं और IN() स्थिति में अलग मान के रूप में माने गए हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3