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

वर्डप्रेस में IN() कंडीशन के साथ तैयार स्टेटमेंट्स को कैसे हैंडल करें?

2024-12-23 को प्रकाशित
ब्राउज़ करें:507

How to Handle Prepared Statements with IN() Condition in WordPress?

वर्डप्रेस में 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 फ़ंक्शंस प्रयुक्त:

  • implode() - सरणी तत्वों को एक में जोड़ता है स्ट्रिंग
  • array_fill() - एक विशिष्ट मान से भरी एक सरणी बनाता है
  • call_user_func_array() - एक फ़ंक्शन को कॉल करता है जिसमें पैरामीटर पास किए जाते हैं array
  • array_merge() - दो को जोड़ता है arrays

यह दृष्टिकोण सुनिश्चित करता है कि $villes में मान ठीक से बच गए हैं और IN() स्थिति में अलग मान के रूप में माने गए हैं।

नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3