活动记录WHERE查询未获取字段

时间:2012-07-11 10:25:27

标签: php codeigniter activerecord

我正在尝试“关键字”搜索。我正在寻找ARTWORK_title和ARTWORK_keywords领域。 ARTWORK_keywords字段是用户可以输入多个要搜索的标签的位置。

我已经构建了一个查询,并认为这是正确的方法,但我只是没有在数据库查询中传回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)   在哪里ARTWORK_status ='1'   和ARTWORK_keywords LIKE'%Blue%'   和ARTWORK_keywords LIKE'%Orange%'

根本没有在查询中获取ARTWORK_title字段。

我出错的任何想法?

非常感谢提前。

1 个答案:

答案 0 :(得分: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++;
    }
}