programing

와일드카드(%)가 있는 코드 점화기 LIKE

testmans 2023. 10. 7. 09:31
반응형

와일드카드(%)가 있는 코드 점화기 LIKE

코드 점화기에 간단한 데이터베이스 쿼리가 있지만 와일드카드로 작동할 수 있는 검색을 얻을 수 없습니다.이게 내 암호입니다.

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

와일드카드(%)를 제거하면 검색이 잘 됩니다.또한 $query는 사용자 입력이 포함된 문자열일 뿐입니다.어떤 도움이든 감사히 받겠습니다.

$this->db->like()%s을(를) 자동으로 추가하고 문자열을 탈출합니다.그래서 당신은 필요한 것은

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

CI 문서 참조: CI 2, CI 3, CI 4

  $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%'

사용자가 사용할 수 있는 Full의 경우:

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

%$ 쿼리의 경우 사용 가능

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

$ query%의 비용으로 사용할 수 있습니다.

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

$this->db->like()

이 메서드를 사용하면 검색할 때 유용한 LIKE 절을 생성할 수 있습니다.

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

생산품: WHEREtitle'%match%'와 같은 경우

와일드카드(%)가 배치되는 위치를 제어하려면 선택적인 세 번째 인수를 사용할 수 있습니다.옵션은 '이전', '이후', '없음' 및 '둘 다'(기본값)입니다.

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

생산품: WHEREtitle'%match'와 같은 경우

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

생산품: WHEREtitle'match%'처럼

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

생산품: WHEREtitle'성냥' 처럼

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

생산품: WHEREtitle'%match%'와 같은 경우

와일드카드(%)를 사용하지 않으려면 옵션 'none'을 선택적인 세 번째 인수로 전달할 수 있습니다.

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

사용하고 있습니다.

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

여러 필드를 한 번에 검색하면 이렇게 할 수 있습니다.

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%");
}

언급URL : https://stackoverflow.com/questions/16226906/codeigniter-like-with-wildcard

반응형