mysql 검색 필터링
본문
$name = $_GET['name'];
$sql = "SELECT address WHERE name = '{$name}'";
위 구문에서
$name을 입력 받지 않았을 때는 name = '{$name}'을 참으로 만들수 있는 방법이 있나요?
즉, 입력값이 없을때는 조건 자체를 없애서 모든 결과를 출력하게 만들고 싶어요.
답변 5
$sql = "select address from 테이블명" where wr_num!='' " // 테이블에서 필수값(순서?)
if($_GET['name']) { $sql = $sql . " and name='".$_GET['name']; }
if($_GET['조건2']) { $sql = $sql . " and 조건2='".$_GET['조건2']; }
질문이 약간 오류가 있으신거 같습니다만
일단,
입력값이 없을때는 조건 자체를 없애서 모든 결과를 출력하게 만들려면
아래처럼 하시면 됩니다.
$name = $_GET['name'];
if($name) {
$sql = "SELECT address from 테이블명 WHERE name = '{$name}'";
}else{
$sql = "SELECT address from 테이블명";
}
답변 감사드립니다. 그런데 위 방식대로 하면
where 절에 and 로 조건이 많이 들어가게 되면 복잡하게 되서요.
where
and
and
and
이런 구문에서 변수 하나가 안 들어오면 그 and 절은 무조건 참으로 만들어서
다른 조건이 필터링 된 결과값을 내고 싶습니다.
if($_GET['name']) $where = " AND name = '".$_GET['name']."'";
$sql = "SELECT address FROM #table WHERE 1 = 1".$where;
이런 식으로 하는 방법도 있습니다.
$name = $_GET['name'] . "'%";
$sql = "SELECT * FROM g5_member WHERE mb_name LIKE '{$name}'";
이렇게 % 연산자를 쓰면 되겠죠.ㅎ
아니면....
if(trim($_GET['name'])) $sql = " name = '" . $_GET['name']. "'";
else $sql = "(1)";
$sql = "SELECT * FROM g5_member WHERE $sql ";
이런정도 조건식이면 되겠네요. 수고하세요.