테스트 사이트 - 개발 중인 베타 버전입니다

sql문 안에 if 사용하기 질문입니다 채택완료

우헤아라아리 6년 전 조회 3,696

안녕하세요

 

오늘 벌써 여러번 질문을 드리네요 아는게 없어서;;

 

$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개

채택된 답변
+20 포인트
6년 전

선택항목이 없는 경우 조건절이 없는데 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 이 있는지 확인해 보시면 될듯 합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인