我正在尝试“关键字”搜索。我正在寻找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字段。
我出错的任何想法?
非常感谢提前。
答案 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++;
}
}