저는 PHP와 MySQL 모두에 대해 매우 익숙하며 가수의 작은 라이브러리를 만들려고합니다. 견적 자체, 가수의 이름 또는 가수의 밴드 (있는 경우)의 일부를 입력하여 사용자가 견적을 검색 할 수있게하고 싶습니다. 이제조건부 필터를 사용하여 MySQL 쿼리를 작성하는 방법은 무엇입니까?
, 나는 거의 못을 박았다 부분 : 그것은 SEARCH_STRING이 단어의 중간에 결과를 반환 alors 있지만
$query = 'SELECT * FROM quotes WHERE (quote LIKE "%'.$search_string.'%" OR singerName LIKE "%'.$search_string.'%" OR bandName LIKE "%'.$search_string.'%")';
이 작품 : 나는 "그녀"를 입력하는 경우를, 그것은 모든를 반환합니다 "다른"또는 "함께"포함 된 견적. 쿼리에서 두 번째 %를 삭제하면 search_string이 원하는 첫 번째 단어가 아닌 따옴표가 반환되지 않습니다.
어쨌든 내가하고 싶은 것은 결과를 필터링 할 수있는 가능성을 부여하는 것입니다. 라디오 버튼을 통해 사용자가 영어, 독일어 또는 둘 다 따옴표 만 표시 할 수있게하려는 경우, 기본적으로 Both가 선택되므로 위의 $ 쿼리는 여전히 유효합니다. 그러나 사용자가 영어를 선택하면 AND (language = 'EN')
과 같이 표시되어야합니다. 없이,
if ($_POST['language']== "EN") {
$sql .= " AND (language = 'EN')";
}
그것은 작동하지만, 나는 또한 사용자는 필터를 사용하여 따옴표를 검색 할로는 진짜 번거 로움 될 수 있습니다 지금은
, 나는 쿼리에이 방법을 추가하는 시도 검색어 입력 : 그들은 Band의 가수가 영어로 따옴표를 찾을 수 있습니다.if (strlen($search_string) < 1) {
$sql = "SELECT * FROM quotes";
}
을하지만 그때는 $sql .= " AND (language = 'EN')";
같이 "AND" "WHERE"해야한다, 더 이상 정확하지 않을 것이다 : 그래서, 난이 있습니다. 그래서 문자열을 수정하기 위해 또 다른 if 절을 가져야하고, 적용하기로 결정한 모든 필터에 대해 또 다른 절을 사용해야합니다.
내 질문은 다음이다 : 어떻게 옵션 필터가 주어진, 내 쿼리를 작성해야하고, 검색도 필터 만 를 사용하여 가능해야한다고?
감사합니다.
또한 당신은 당신이 원하지 않는 검색 결과를 제외 할 수 있습니다 정규 표현식 사용이 방법을 확인 https://dev.mysql.com/doc/refman/5.1/en/regexp.html 수처럼 사용하려는 해달라고하면 – Tyranicangel