이렇게 간단한 작업처럼 보이지만, 제가 좋아하는 솔루션을 찾는 데 어려움을 겪고 있습니다. 내가 clunky 이외의 것을 고려할만한 것을 찾을 수는 없다. 여기 내가 함께 일하고있어 :게시 된 변수를 기반으로 MySQL 쿼리를 작성하십시오.
처리 스크립트에 변수를 게시하는 검색 양식이 있습니다. 이러한 변수는 쿼리되는 데이터의 필터입니다. 사용자의 권한에 따라 액세스 권한이있는 필터에 따라 유입되는 변수가 더 많거나 적을 수 있습니다. 각 필터는 기본적으로 결과가 나오는 표의 필드를 참조합니다. 각 필터에 대한 하나의 옵션은 "ANY"이므로 WHERE 절도 필요하지 않습니다.
쿼리 문자열을 작성하는 좋은 방법은 무엇입니까? $ firstname, $ lastname, $ age, $ dob 등 네 가지 변수가 있다고 가정 해 보겠습니다. 그러나 일부 사용자 만 $ age 및 $ dob로 필터링 할 수 있습니다.
$query = "SELECT * FROM people";
if(($firstname != 'ANY' && !empty($firstname)) ||
($lastname != 'ANY' && !empty($lastname)) ||
($age != 'ANY' && !empty($age)) ||
($dob != 'ANY' && !empty($dob))) {
$query .= " WHERE";
}
if($firstname != 'ANY' && !empty($firstname)) {
$query .= " firstname='$firstname'";
}
if($lastname != 'ANY' && !empty($lastname)) {
if($firstname != 'ANY' || !empty($firstname)) {
$query .= " AND";
}
$query .= " lastname='$lastname'";
}
...
등등. 그러나 그것은 단지 나에게 멍청하고, 끔찍하며, 비 효과적으로 보입니다. 약간 수정 된 MVC 패턴을 사용하고 있으므로 가능한 각 필터에 대해 검색 모델에 메서드를 구축하는 것이 합리적일까요?
수행 할 수 있지만 공간을 줄이기위한 보조 메모로 *를 사용하지 말고 입력란을 지정하십시오. –