आप कर सकते हैं:
$sql=$DB->quoteInto("SELECT *
FROM t
WHERE myname LIKE '%?%'",$input);
मुझे
SELECT *
FROM t
WHERE myname LIKE '%'my input'%';
और
देंगे
रूप
$sql=$DB->quoteInto("SELECT *
FROM t
WHERE myname LIKE ?",'%'.$input.'%');
मुझे तर्ज पर कुछ देना होगा एसक्यूएल स्तर पर $ इनपुट के संयोजन:
$sql=$DB->quoteInto("SELECT * FROM t WHERE myname LIKE '%'|| ? ||'%'",$input);
दुर्भाग्य से यह जब आप चाहते हैं $ इनपुट शाब्दिक '%' या '_' वर्ण के लिए सक्षम होना प्रयोग करने योग्य नहीं है। इस दौर पाने के लिए, एक स्पष्ट तरह-एस्केप वर्ण निर्दिष्ट करें और उन्हें अपने भागने:।
$inputlike= '%'.preg_replace('[%_=]', '=$0', $input).'%';
$sql=$DB->quoteInto("SELECT * FROM t WHERE myname LIKE ? ESCAPE '='", $inputlike);
(यह किसी भी चरित्र हो सकता है जरूरी नहीं कि '=' यह भी करने के लिए जहां ESCAPE चूक एक बग के आसपास काम करता है '\' जब MySQL में निर्दिष्ट नहीं है।)
दुर्भाग्यवश SQL सर्वर भी '[' चरित्र को विशेष रूप से लेता है, एक regexp- जैसे चरित्र समूह करने के लिए। तो यदि आपका डीबी SQL सर्वर है तो आपको preg_replace में समूह में '[' शामिल करना होगा। दुर्भाग्य से यह अन्य डीबीएमएस पर '[' से बचने के लिए वैध एएनएसएल एसक्यूएल नहीं है जहां इसे बचने की आवश्यकता नहीं है।
यह सबसे अच्छा तरीका है :) –
एफडब्ल्यूआईडब्ल्यू, यह एकल-उद्धरण सहित '% queryvalue%' आउटपुट करता है। –