मैं एक ही समस्या पर अब दो बार भाग चुका हूं और मुझे लगता है कि मुझे एक बहुत ही सरल और अच्छा समाधान मिल गया है। यदि मैं कई बार मापदंडों का उपयोग करना चाहता हूं, तो मैं उन्हें सिर्फ एक MySQL User-Defined Variable
में संग्रहीत करता हूं .
यह कोड को और अधिक पठनीय बनाता है और आपको PHP में किसी अतिरिक्त फ़ंक्शन की आवश्यकता नहीं है:
$sql = "SET @term = :term";
try
{
$stmt = $dbh->prepare($sql);
$stmt->bindValue(":term", "%$term%", PDO::PARAM_STR);
$stmt->execute();
}
catch(PDOException $e)
{
// error handling
}
$sql = "SELECT ... FROM table WHERE name LIKE @term OR number LIKE @term";
try
{
$stmt = $dbh->prepare($sql);
$stmt->execute();
$stmt->fetchAll();
}
catch(PDOException $e)
{
//error handling
}
केवल नकारात्मक पक्ष यह हो सकता है कि आपको एक अतिरिक्त MySQL क्वेरी करने की आवश्यकता है - लेकिन यह पूरी तरह से इसके लायक है।
चूंकि User-Defined Variable
MySQL में सत्र-बाध्य हैं, चर के बारे में चिंता करने की कोई आवश्यकता नहीं है @term
बहु-उपयोगकर्ता वातावरण में दुष्प्रभाव पैदा कर रहा है।