Codeigniter: Weird behaviour of $this->db->like()

后端 未结 3 875
悲哀的现实
悲哀的现实 2020-12-16 19:19

I\'ve written a simple query for searching a keyword in the database.

$keyword = \"keyword sample\"; 
$keyword = str_replace(\" \", \"%\", $keyword);   

$th         


        
3条回答
  •  感情败类
    2020-12-16 19:32

    You just try it like this:

    $this->db->select('*')
    $this->db->from('table');
    $this->db->like('column', $keyword);
    return $this->db->get()->result_array();
    

    If you want to control where the wildcard (%) is placed, you can use an optional third argument. Your options are 'before', 'after' and 'both' (which is the default).

    example:

    $this->db->select('*')
    $this->db->from('table');
    $this->db->like('column', $keyword, 'before');
    return $this->db->get()->result_array();
    

    If you do not want to use the wildcard (%) you can pass to the optional third argument the option 'none'.

    example:

    $this->db->select('*')
    $this->db->from('table');
    $this->db->like('column', $keyword, 'none');
    return $this->db->get()->result_array();
    

    BUT, for your example you must need to search like "%keyword sample%", or like "%keyword%" OR "%simple%";

    For example:

    $this->db->like('column', 'keyword simple');
    // Produces: WHERE column LIKE '%keyword simple%' 
    

    OR

    $this->db->like('column', 'keyword');
    $this->db->or_like('column', 'simple');
    // Produces: WHERE column LIKE '%keyword%' OR column LIKE '%simple%'  
    

    More, you can read CodeIgniter User Guide

提交回复
热议问题