2012-07-11 69 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