저는 독학으로 초보 프로그래머입니다. 최근에 저는 PHP 스크립트를 사용하여 사용자가 입력 한 키워드로 데이터베이스를 쿼리했습니다. 제가 생각한 것보다 훨씬 더 복잡해 보입니다. 그래서 제가 쓴 것을 단순화 할 수있는 방법이 있는지 궁금합니다. 다른 질문이 있거나 더 많은 코드가 필요하면 알려주십시오. 고맙습니다! 당신의 WHERE
조건이 매우 다르기 때문에SQL 쿼리 용 PHP 스크립트 단순화
$types = array();
if(!empty($_GET['location_id']) && isset($_GET['location_id'])) $types[] = "groups.location_id = " . str_replace(' ', '%', $_GET['location_id']) . " ";
if(!empty($_GET['season_id']) && isset($_GET['season_id'])) $types[] = "seasons.season_id = " . str_replace(' ', '%', $_GET['season_id']) . " ";
if(!empty($_GET['event']) && isset($_GET['event'])) $types[] = "(`event` LIKE '%" . str_replace(' ', '%', $_GET['event']) . "%' OR `note` LIKE '%" . str_replace(' ', '%', $_GET['event']) . "%') ";
if(!empty($_GET['place']) && isset($_GET['place'])) $types[] = "`place` LIKE '%" . str_replace(' ', '%', $_GET['place']) . "%' ";
if(!empty($_GET['city']) && isset($_GET['city'])) $types[] = "`city` LIKE '%" . str_replace(' ', '%', $_GET['city']) . "%' ";
if(!empty($_GET['state_abbr']) && isset($_GET['state_abbr'])) $types[] = "`state_abbr` LIKE '%" . str_replace(' ', '%', $_GET['state_abbr']) . "%' ";
if(!empty($_GET['weekday']) && isset($_GET['weekday'])) $types[] = "(`weekday` LIKE '%" . str_replace(' ', '%', $_GET['weekday']) . "%' OR `through_weekday` LIKE '%" . str_replace(' ', '%', $_GET['weekday']) . "%') ";
if(!empty($_GET['month']) && isset($_GET['month'])) $types[] = "`month` LIKE '%" . str_replace(' ', '%', $_GET['month']) . "%' ";
if(!empty($_GET['day']) && isset($_GET['day'])) $types[] = "(`day` LIKE '%" . str_replace(' ', '%', $_GET['day']) . "%' OR `through_day` LIKE '%" . str_replace(' ', '%', $_GET['day']) . "%') ";
if(!empty($_GET['year']) && isset($_GET['year'])) $types[] = "`year` LIKE '%" . str_replace(' ', '%', $_GET['year']) . "%' ";
나는 단지 비슷한 대답을 쓰고 있었다. 단지 차이점은'$ _GET'에 사용 된 키를 가진 배열을 설정하고 그것들만을 수정했다는 것이다. 아마도'$ _GET' 전체를 스캔하고 수정하기를 원하지 않을 것입니다. 왜냐하면 수정하고 싶지 않은 다른 값들이있을 수 있기 때문입니다. –
@AaronW. 귀하의 코드가 어떻게 보이는지 보여 줄 수 있습니까? 고맙습니다! –