sql문 안에 if 사용하기 질문입니다
본문
안녕하세요
오늘 벌써 여러번 질문을 드리네요 아는게 없어서;;
$sql = " select * from {$g5['teamcost_table']} where co_team='{$co_team}' and co_status='{$co_status}' order by co_team, co_date asc ";
처음 이렇게 select 문을 만드니까 wehre 안에 co_team 과 co_status 의 값이 선택된 것이 아닌 전체
<option value="">전체</option>
이걸 선택했을때 작동이 되지 않아 아무 값도 가져오지 않았습니다
그래서
$sql = " select * from {$g5['teamcost_table']} where ";
if ( $_GET['co_team'] != "" ) {
$sql .= " co_team='{$co_team}' ";
}else{
$sql .= " co_team IN ('1팀', '2팀', '3팀', '4팀', '5팀') ";
}
if ( $_GET['co_status'] != "" ) {
$sql .= " and co_status='{$co_status}' order by co_team, co_date asc "
}else{
$sql .= " and co_status IN ('대기', '승인', '반려') order by co_team, co_date asc "
}
이렇게 만들어봤는데 이거는 아예 오류가 떠 버리더라고
where 안에서 전혀 서로 관계없는 if를 두번 사용해서 select를 만들고 싶은데
도움이 필요합니다
답변 2
선택항목이 없는 경우 조건절이 없는데 where만 덩그러니 남으니 에러가 날 밖에 없습니다
where (1) <-- (1) 추가
$sql .= " and co_team='{$co_team}' "; //and 추가
$sql .= " and co_team IN ('1팀', '2팀', '3팀', '4팀', '5팀') "; //and 추가
----------------------------
위처럼 하면 order by가 적용 안되는 경우가 생기므로 아래처럼 하세요
if ( $_GET['co_team'] != "" ) $sql2[] = " co_team='{$co_team}' ";
if ( $_GET['co_status'] != "" ) $sql2[] = " co_status='{$co_status}' ";
if($sql2[0] ) $sqlStr = "where ".implode(" and ", $sql2);
$sql = " select * from {$g5['teamcost_table']} $sqlStr order by co_team, co_date asc ";
마지막에 echo $sql 해서 최종 쿼리를 찍어보세요.
유추해보면 값이 없을떼 null 이 있는지 확인해 보시면 될듯 합니다.