2008-09-13 12 views
11

बात की इस तरह करने के लिए कोशिश कर रहा है ...पीडीओ में बाध्य पैरामीटर का उपयोग करके आप अस्पष्ट खोज कैसे करते हैं?

WHERE username LIKE '%$str%' 

... लेकिन पीडीओ में तैयार बयान करने के लिए बाध्य मानकों का प्रयोग करके। उदा .:

$query = $db->prepare("select * from comments where comment like :search"); 
$query->bindParam(':search', $str); 
$query->execute(); 

मैं सिंगल कोट्स और% लक्षण के कई क्रमपरिवर्तन की कोशिश की है और यह सिर्फ मेरे साथ पार हो रही है।

मुझे किसी बिंदु पर इसके साथ कुश्ती याद है लेकिन मुझे कोई संदर्भ नहीं मिल रहा है। क्या किसी को पता है कि कैसे (अगर?) आप पीडीओ में नामित पैरामीटर के साथ यह अच्छी तरह से कर सकते हैं?

उत्तर

15

आह। Php.net पर एक टिप्पणी मिली जिसने मुझे जवाब की याद दिला दी; बिंदप्रम का मूल्यांकन करने से पहले आपको अपने मूल्य को वाइल्डकार्ड करने की ज़रूरत है, और इसे उद्धृत करने की चिंता न करें। उदाहरण के लिए इस ठीक काम करता है:

$str = "%$str%"; 
$query = $db->prepare("select * from comments where comment like :search"); 
$query->bindParam(':search', $str); 
$query->execute(); 
+0

खुशी है कि आपको यह मिला। मैंने इसे दूसरे दिन भी पाया, एक ही चीज़ की तलाश में। बहुत बुरा आप अपना जवाब स्वीकार नहीं कर सकते! –

+1

आह - उन्होंने इसे ठीक किया - अब आप अपना उत्तर स्वीकार कर सकते हैं। लाइब्रेरी – Polsonby

4

5 साल बाद, इस पर मामला किसी और stumbles में, वहाँ एक वैकल्पिक पद्धति मुझे पता चला है है। स्वीकार किए जाते हैं समाधान मेरी स्थिति के लिए वास्तव में संभव नहीं था, लेकिन इस विधि काम के साथ-साथ किया जाना लगता है: बुलाने की भूमि के ऊपर की वजह से

$query = $db->prepare("select * FROM table WHERE field LIKE CONCAT('%',:search,'%')"); 
$query->bindParam(':search', $str); 
$query->execute(); 

मुझे यकीन है कि नहीं कर रहा हूँ अगर वहाँ एक प्रदर्शन हिट हो जाएगा CONCAT फ़ंक्शन, लेकिन मैं इसे एक विकल्प के रूप में पास करना चाहता था। उम्मीद है कि यह किसी की मदद करेगा।

+0

'$ query-> बाइंडपाराम (': खोज',"% $ str% ") के रूप में StackOverflow का उपयोग करने के लिए अच्छा;' व्यवहार्य नहीं था? आप मजाक कर रहे हो? –

+1

हाहा, हाँ, कोड डेटाबेस अबास्ट्रक्शन फ़ंक्शन में है जो इनपुट से WHERE क्लॉज उत्पन्न करता है। उस फ़ंक्शन में पैरामीटर मानों तक पहुंच नहीं है, केवल कुंजी। ऐसा करने का शायद एक बेहतर तरीका है, लेकिन यह अभी काम कर रहा है, इसलिए मैं इसके साथ रहूंगा। –

+2

नीचे मतदान थोड़ा कठोर लगता है। यह समस्या का एक वैध समाधान है ना? –