Codeigniter LIKE с подстановочным знаком (%)

У меня есть простой запрос базы данных в codeigniter, однако я не могу заставить поиск работать с подстановочным знаком. Это мой код:

$this->db->like('film.title',"%$query%");
$this->db->escape_like_str($query);
$res = $this->db->get('film');

Если я удаляю wildcard (%), то поиск работает нормально. Также $query - это просто строка с пользовательским вводом. Любая помощь приветствуется.

Ответ 2

Fur Full, как вы можете:

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

Для запроса% $вы можете использовать

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

и для $query% вы можете использовать

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

Ответ 3

Я использую

$this->db->query("SELECT * FROM film WHERE film.title LIKE '%$query%'"); for such purposes

Ответ 4

Если вы не хотите использовать подстановочный знак (%), вы можете перейти к необязательному третьему аргументу опции "none".

$this->db->like('title', 'match', 'none'); 
// Produces: WHERE title LIKE 'match'

Ответ 5

  $this->db->like('title', 'match', 'before'); 
 // Produces: WHERE title LIKE '%match' 

 $this->db->like('title', 'match', 'after'); 
// Produces: WHERE title LIKE 'match%' 

$this->db->like('title', 'match', 'both'); 
// Produces: WHERE title LIKE '%match%'

Ответ 6

Поиск нескольких полей одновременно может быть выполнен так...

function search($search)
{
    $sql = "SELECT * FROM some_table
    WHERE UPPER(a_name) LIKE ?
    OR
    UPPER(a_full_name) LIKE ?
    OR
    UPPER(a_city) LIKE ?
    OR
    UPPER(a_code) LIKE ?
    ";
    $arr = array_map(array($this,"wrapLIKE"),array($search, $search, $search, $search));
    $r = $this->db->query($sql, $arr);
    return $r;
}

function wrapLIKE($string)
{
    return strtoupper("%$string%");
}