0

「キーワード」検索を試みています。フィールド ARTWORK_title と ARTWORK_keywords を見ています。ARTWORK_keywords フィールドは、ユーザーが複数のタグを入力して検索できる場所です。

クエリを作成しましたが、これが正しい方法だと感じていますが、DB クエリで 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_keywordsLIKE '%Blue%' AND ARTWORK_keywordsLIKE '%Orange%'

クエリで ARTWORK_title フィールドをまったく取得していません。

私が間違っているアイデアはありますか?

よろしくお願いします。

4

1 に答える 1

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++;
    }
}
于 2012-07-11T10:28:40.300 に答える