2012-07-11 72 views
0

我正在嘗試「關鍵字」搜索。我正在查看ARTWORK_title和ARTWORK_keywords字段。 ARTWORK_keywords字段是用戶可以輸入多個標籤進行搜索的位置。活動記錄WHERE查詢沒有得到一個字段

我已經建立了一個查詢,並覺得這是正確的方式,但我只是沒有得到ARTWORK_title在數據庫查詢中傳回。

我的PHP函數如下....

$my_keywords = explode(",", $search_string); 

    $searchfields = array('ARTWORK_title', 'ARTWORK_keywords'); 

    $this->db->select('*'); 
    $this->db->from('artwork'); 
    $this->db->where('ARTWORK_status', '1'); 

    //$where_string = '('; 

    foreach($my_keywords as $keyword) 
    { 
     foreach($searchfields as $field) 
     { 
      $where_string = $field . ' LIKE \'%' . $keyword . '%\' '; 
     } 


     //$where_string .= substr($where_string, 4) . ')'; 

     $this->db->where($where_string); 
} 

然而剖析SQL查詢我正在以下MySQL查詢回來的時候....

SELECT * FROM ( artwork) WHERE ARTWORK_status = '1' AND ARTWORK_keywords LIKE '%藍%' AND ARTWORK_keywords LIKE '%橙%'

它只是沒有在查詢中獲得ARTWORK_title字段。

任何想法我錯了嗎?

很多預先感謝。

回答

1

您正在擦除每個迭代的$where_string值。

修改這樣的:

$where_string = '';  
$counter = 0; 
foreach($my_keywords as $keyword) 
{ 
    foreach($searchfields as $field) 
    { 
     if ($counter > 0) { 
      $where_string .= ' AND ';  
     } 
     $where_string .= $field . ' LIKE \'%' . $keyword . '%\' '; 
     $counter++; 
    } 
} 
+0

嗨@Yan這就是讓外地趕回。但查詢現在給我一個MYSQL錯誤: SELECT * FROM('artwork')WHERE ARTWORK_status' ='1'ARTWORK_title' LIKE'%Blue%'ARTWORK_keywords LIKE'%Blue%'ARTWORK_title LIKE'%'橙%%'ARTWORK_keywords LIKE'%Orange%' 它試圖運行 – StuBlackett 2012-07-11 10:34:01

+0

新的MySQL錯誤:未知列'AND' – StuBlackett 2012-07-11 10:36:56

+0

@StuBlackett請立即嘗試。 – 2012-07-11 10:39:30