मैं उपयोगकर्ता द्वारा प्रदत्त मानकों द्वारा खोज करने के लिए पैरामीटरयुक्त क्वेरी निष्पादित करना चाहता हूं। बहुत सारे पैरामीटर हैं और उनमें से सभी को हर समय आपूर्ति नहीं की जा रही है। मैं एक मानक क्वेरी कैसे कर सकता हूं जो सभी संभावित मानकों को निर्दिष्ट करता है, लेकिन इन पैरामीटरों में से कुछ को अनदेखा करते हैं यदि उपयोगकर्ता ने सार्थक पैरामीटर मान नहीं चुना है?विशेष रूप से WHERE मानदंडों को अनदेखा करें
यहाँ वर्णन करने के लिए कि मैं क्या जाहिर है के लिए
$sql = 'SELECT * FROM people WHERE first_name = :first_name AND last_name = :last_name AND age = :age AND sex = :sex';
$query = $db->prepare($sql);
$query->execute(array(':first_name' => 'John', ':age' => '27');
जा रहा हूँ एक काल्पनिक उदाहरण है, इस काम नहीं करेगा क्योंकि प्रदान की पैरामीटर की संख्या की उम्मीद पैरामीटर की संख्या से मेल नहीं खाता। क्या मुझे WHERE क्लॉज में केवल निर्दिष्ट पैरामीटर को शामिल करने के साथ हर बार क्वेरी तैयार करना है, या इन पैरामीटरों में से कुछ को अनदेखा करने के लिए कोई तरीका है या चेक किए जाने पर हमेशा सत्य वापस आना है?
मुझे लगता है कि वह क्या चाहता है नहीं लगता। यह मिलान होगा 'first_name' का मिलान मूल्य है, या यदि यह शून्य है। लेकिन जो मैं समझता हूं, वह चाहता है कि वह 'first_name' किसी भी चीज़ से मिलान करे (जैसे कि उस कॉलम के लिए कोई WHERE क्लॉज नहीं था)। – netcoder
@netcoder यह जांच नहीं कर रहा है कि first_name शून्य है, तो यह जांच रहा है कि '(first_name = @var या @var शून्य है)' –
ओह, आप सही हैं, मैंने बहुत तेज़ पढ़ा है :) – netcoder