2011-09-13 112 views
0

首先,我在我的模型的東西:如何讓php codeIgniter活動記錄組?

$this->db->where('status', $aStatus);  
    $this->db->limit($aLimit, $aOffset); 

    $this->db->or_like('title', $aString);  
    $this->db->or_like('description', $aString);  

    $this->db->select('id,description,title,fee'); 

    $query = $this->db->get($this->table_name); 

而且我得到了這個查詢:

選擇iddescriptiontitlefee FROM(events)WHERE status = 0 AND title LIKE '%space%'或description LIKE '%space%'LIMIT 5

但我想,讓它產生這個查詢,而不是

SELECT iddescriptiontitlefee FROM(events)WHERE status = 0 AND title LIKE '%的空間%' OR description LIKE '%空間%' LIMIT 5

我該如何修改才能做到這一點?謝謝。

回答

1

想想你會管理,唯一的辦法是沿着線做的事情:

$this->db->where('status', $aStatus); 
$this->db->where("(title LIKE '%space%' OR description LIKE '%space%')"); 
$this->db->limit($aLimit, $aOffset); 

$this->db->select('id,description,title,fee'); 

$query = $this->db->get($this->table_name); 

沒有測試它,但它應該讓你在路上。除此之外,我認爲不可能以任何其他方式包含分組/括號內的查詢。

+0

如果我使用sql語句,做我需要逃避這個詞,否則它會幫助我自動逃脫? – Tattat

+0

快速測試表明搜索詞不會被轉義。 – simnom

0

我只想做一些像

$this->db->where('status', $aStatus);  
$this->db->limit($aLimit, $aOffset); 

$this->db->where(sprintf(
    '(title LIKE %s OR description LIKE %s)', 
    $this->db->escape_like_str($aString),  
    $this->db->escape_like_str($aString) 
), NULL);  

$this->db->select('id,description,title,fee'); 

$query = $this->db->get($this->table_name); 
1

分組LIKE子句(約把括號)

$this->db->group_start(); 
$this->db->like('name', $query_array['q']); 
$this->db->or_like('description', $query_array['q']); 
$this->db->group_end(); 

會產生一輪backets這樣

(
    `name` LIKE '%test%' ESCAPE '!' 
    OR `description` LIKE '%test%' ESCAPE '!' 
)