2010-09-19 13 views
8

मैं इस तरह एक प्रश्न चलाना चाहते हैं:CodeIgniter के साथ LIKE क्वेरी का उपयोग कैसे करें?

SELECT * FROM table WHERE field LIKE '%search_term%' 

सीआई में आप, प्रश्नों के मानकों बाध्य कर सकते हैं अगर आप field=? थे, लेकिन इस field LIKE "%?%" के लिए काम नहीं करता। डीबगिंग आउटपुट से ऐसा लगता है कि इस्तेमाल की गई क्वेरी field LIKE "%'search'%" है।

क्या कोडइग्निटर में खोज करने का कोई वैकल्पिक तरीका है?

उत्तर

16

आपने इस क्वेरी का उपयोग कर सकते हैं:

SELECT * FROM table WHERE field LIKE ? 

और %search% बजाय search साथ बाँध।

आपको पता होना चाहिए कि यह क्वेरी MySQL में धीमी हो जाएगी। आप इसके बजाय फ्री-टेक्स्ट खोज (ल्यूसीन, स्फिंक्स, या माईएसक्यूएल के अंतर्निहित मुक्त-पाठ खोज फ़ंक्शंस) देखना चाहते हैं।

+0

धन्यवाद, यह काम करता है। यह मेरी लिपि के एक बड़े हिस्से के लिए नहीं है इसलिए गति कोई मुद्दा नहीं है। – DisgruntledGoat

+0

MySQL फ्री-टेक्स्ट संदर्भ के लिए धन्यवाद! –

0

क्या मैं समझ सकता हूं कि सीआई उद्धरण जोड़ रहा है, सीआई जोड़ना उद्धरण रोकने के लिए बाध्यकारी करते समय तीसरे पैरामीटर के रूप में FALSE पास करें।

2

इस CodeIgniter के लिए सक्रिय रिकॉर्ड वर्ग

$this->db->select('*'); 
$this->db->like('columnname','both'); 
$query=$this->db->get("tablesname"); 
$result=$query->result_array(); 
if(count($result)) 
{ 
return $result; 
} 
else 
{ 
return FALSE; 
} 

आप this..I लगता है इसकी सहायता से आप .. दोनों का मतलब है की कोशिश करनी चाहिए% columnName%, से पहले साधन% columnName, साधन के बाद columnName%

है
1
$search_term=$this->input->post('textboxName'); 
$search_term="%".$search_term."%"; 
$sql="SELECT * FROM table WHERE field LIKE ? "; 
$query=$this->db->query($sql,array($search_term)); 
$res=$query->result(); 
+0

यह पहले से ही 7 साल पहले उत्तर दिया गया था। – DisgruntledGoat

+0

हां। यह एक ऐसी स्थिति का उत्तर है जहां खंड की तरह स्ट्रिंग है। लेकिन मैं एक प्रश्न के साथ संघर्ष कर रहा था जहां समान खंड में परिवर्तनीय। यदि आप इसे% variable_name% के रूप में परिभाषित करते हैं तो यह काम नहीं करता है। मुझे एक समाधान मिला। यही कारण है कि मैंने जवाब दिया। –

संबंधित मुद्दे