2013-07-03 2 views
1

MySQL 데이터베이스에서 사용자가 입력 한 5 개의 다른 문자열로 구성된 검색 쿼리를 만들고 싶습니다. 이 문자열로 5 개의 다른 테이블 열을 쿼리하고 싶습니다.php codeigniter MySQL 검색 쿼리

이름, 성, 주소, 우편 번호, 도시 :

내가 예를 들어 같은 입력 필드가

.

내가 항상 모든 행을 가져 오지 않는 데이터베이스를 어떻게 쿼리해야합니까?

내 쿼리는 다음과 같은 것입니다 :

SELECT user_id, username 
from users 
where 
a like %?% AND 
b like %?% AND 
c like %?% AND 
d like %?% AND 
e like %?%; 

나는 내가 항상 의미가있는 모든 결과를 얻는다면, 내가 사용 때 난 단지 정확한 일치를 얻기 위해 또는 ...

를 교환 할 때

나를 돕는 함수 나 문장이 있습니까?

편집

내가 사용하는 코드는 다음과 같습니다

$sql = "select users.user_id, first_name 
    from users 
    inner join user_normal_aos 
    on users.user_id = user_normal_aos.user_id 
    inner join normal_areas_of_expertise 
    on user_normal_aos.normal_areas_of_expertise_id = normal_areas_of_expertise.normal_areas_of_expertise_id 
    where 
    users.first_name like ? AND 
    users.kanzlei like ? AND 
    normal_areas_of_expertise.normal_aoe like ? AND 
    users.postcode like ? AND 
    users.city like ?"; 

    $query = $this->db->query($sql, 
     array(
      '%'.$lawyer_name.'%', 
      '%'.$kanzlei.'%', 
      '%'.$area_of_expertise.'%', 
      '%'.$post_code.'%', 
      '%'.$city.'%') 
     ); 
+0

"검색어"를 먼저 정의 할 수 있습니까? 달성하고자하는 것이 무엇입니까? –

+0

남자를 정확히 원하면 무엇입니까? –

+0

?, 수동으로 검색 기준을 바꾸려고 시도 했습니까? –

답변

0

예를 들어, 사용 PHP는 사용자가 입력 한 필드 내용을 기반으로 쿼리를 조정합니다.

$where = array(); 
$replacements = array(); 
/* you can also compare if string is not null or not empty... 
    this is just example using isset */ 
if (isset($lawyer_name)) { 
    $where[] = 'users.first_name like ?'; 
    $replacements[] = '%'.$lawyer_name.'%'; 
} 

/* repeat this if again for all your fields .... */ 

$sql = "..... where ".implode(' AND ', $where); 

$query = $this->db->query($sql, 
    $replacements 
); 
+0

고마워, 나는'! == "" 'isset() 대신에 isset() 메쏘드가 작동하지 않는다. – kalafun