0

私は自分のウェブサイトに検索フォームを実装しようとしています。

codeigniterのアクティブレコードとmysqlを使用して、モデルで次の機能を実行します。

$search_query = 'charge fees for project';

    function get_search_results($search_query){
            $data = '';

            $this->db->like('title', $search_query);
            $this->db->or_like('content', $search_query);               

            $query = $this->db->get('faq'); 

            foreach ($query->result() as $row) {
                $data[] = array(
                    'id' => $row->id,
                    'category' => $row->category,
                    'sub_category' => $row->sub_category,
                    'title' => $row->title,
                    'content' => $row->content,
                    'date' => $row->date
                );
            }

            return $data;
    }

私のデータベースには、次のデータを含む行があります。

row->title - What fees does the website charge?
row->content - We charges total fees. When your account is successfully project created.

これらのキーワードがタイトルとコンテンツの両方に含まれていても、検索クエリは結果を返しません。検索クエリを取得してデータベースエントリ内のキーワードを選択し、結果を返すにはどうすればよいですか?

4

2 に答える 2

2

search_queryクエリを実行する前に、変数を分割する必要があります。

$search_query_values = explode(' ', $search_query);
$counter = 0;
foreach ($search_query_values as $key => $value) {
    if ($counter == 0) {
        $this->db->like('title', $value);
    }
    else {
        $this->db->or_like('title', $value);
        $this->db->or_like('content', $value);
    }
    $counter++;
}
$query = $this->db->get('faq');

パフォーマンスを向上させるためにLIKE、withのみを使用することをお勧めします。word%コード:

$this->db->like('title', $value, 'after');

于 2012-06-27T13:50:27.883 に答える
0

この指示を注意深く使用してください

$this->db->like('title', $search_query);

3番目のパラメーターの前後に指定する必要がありません。デフォルトではそれを行います。%my_string%ユーザーガイドをお読みください。

http://codeigniter.com/user_guide/database/active_record.html

于 2012-06-27T13:32:48.817 に答える