PHP में तैयार mysqli क्वेरी में पैरामीटर की उपेक्षा कैसे करें?



(1)

आप मानदंड की एक सूची का निर्माण कर सकते हैं और एक सूची में बाँध मूल्यों और प्रकारों को जोड़ सकते हैं, यहाँ एक त्वरित नकली है जो आपके द्वारा संदर्भित क्षेत्रों में से दो का उपयोग करता है ...

$data = [];
$params = "";
$where = [];
if ( !empty($name)) {
    $data[] = $name;
    $params.="s";
    $where[] = "name like ?";
}
if ( !empty($size)) {
    $data[] = $size;
    $params.="i";
    $where[] = "size < ?";
}
$sql = "SELECT * FROM items";
if ( count($where) > 0 ){
    $sql .= " where ". implode ( " and ", $where);
}
$query = $database->prepare($sql);
$query->bind_param($params, ...$data);
$query->execute();

ध्यान दें कि bind_param() आपको व्यक्तिगत फ़ील्ड के बजाय एक सरणी पास करने की अनुमति देने के लिए ... का उपयोग करता है।

मेरे पास इस तरह तैयार की गई mysqli क्वेरी है:

$query = $database->prepare("SELECT * FROM items WHERE inStock > ? AND size < ? AND name LIKE ?");            
$query->bind_param('iis', $inStock, $size, $name);              
$query->execute();  

WHERE क्लॉज में कई विभिन्न शर्तें हैं जो परिणामों को फ़िल्टर करती हैं। समस्या यह है, कि उन मापदंडों को खोज रूप में आपूर्ति की जाती है और वे अनिवार्य नहीं हैं। उदाहरण के लिए, कोई व्यक्ति केवल नाम का उपयोग करके, या केवल आकार और नाम का उपयोग करके, या एक ही समय में आकार, नाम और इनस्टॉक का उपयोग करके खोज कर सकता है।

मुझे क्वेरी को समायोजित करने के लिए कुछ तरीके की आवश्यकता है ताकि मैं केवल उन मापदंडों की आपूर्ति कर सकूं जो मुझे चाहिए। एकमात्र उपाय जिसके बारे में मैं सोच सकता हूं, वह एक विशाल बनाने के लिए है .. यदि संरचना जहां खोज विकल्पों के सभी संयोजनों के साथ तैयार प्रश्न मौजूद हैं, लेकिन यह प्रश्न से बाहर है क्योंकि हजारों संयोजन हैं।

एकमात्र वास्तविक यथार्थवादी समाधान जिसके बारे में मैं सोच सकता हूं, वह एक तैयार नहीं क्वेरी का उपयोग करना होगा, जहां मैं $query .= "AND name LIKE '%".escapestuff($_POST['name'])."%'" जैसे $query .= "AND name LIKE '%".escapestuff($_POST['name'])."%'" जैसी स्थितियों को एक साथ $query .= "AND name LIKE '%".escapestuff($_POST['name'])."%'"

लेकिन यह बहुत बदसूरत है और मैं तैयार क्वेरी सिस्टम के साथ रहना पसंद करूंगा।





mysqli