답변 4개 / 댓글 4개
채택된 답변
+20 포인트
7년 전
php의 while(1) { } 하고 같다고 보면 됩니다. 항상 true 가 되어 실행되죠
답변에 대한 댓글 3개
7년 전
밑에 답변이 달린거 보니 설명이 부족했나 봅니다.
php 에서
if 조건절
실행문
sql 에서
select 실행문 where 조건절
if 문에서 조건절이 없으면 에러가 나듯이
where 에도 조건절이 없으면 에러가 납니다.
보통은 where 1 로 많이 씁니다.
where (1) 또는 where 1 은 true 로 인식되어 select 실행문이 항상 실행되죠
예를 들면 회원검색에서 남자만 검색한다면
$where = " and sex = 'M' "
"select * from table where " +$where;
이런 경우 where and sex = 'M' 이 되어 에러가 나죠
이걸 막기 위해 select 실행문이 항상 실행되면서 에러가 안나도록 하는 겁니다.
"select * from table where 1 " + $where;
조건절이 추가 될수 있는 경우를 대비하여 where (1) 로 했다면 보시면 됩니다.
조건절이 필요없는 경우라면 where 1 을 굳이 넣을 필요가 없지요.
php 에서
if 조건절
실행문
sql 에서
select 실행문 where 조건절
if 문에서 조건절이 없으면 에러가 나듯이
where 에도 조건절이 없으면 에러가 납니다.
보통은 where 1 로 많이 씁니다.
where (1) 또는 where 1 은 true 로 인식되어 select 실행문이 항상 실행되죠
예를 들면 회원검색에서 남자만 검색한다면
$where = " and sex = 'M' "
"select * from table where " +$where;
이런 경우 where and sex = 'M' 이 되어 에러가 나죠
이걸 막기 위해 select 실행문이 항상 실행되면서 에러가 안나도록 하는 겁니다.
"select * from table where 1 " + $where;
조건절이 추가 될수 있는 경우를 대비하여 where (1) 로 했다면 보시면 됩니다.
조건절이 필요없는 경우라면 where 1 을 굳이 넣을 필요가 없지요.
여러분들 덕분에 제 머리가 좋아지고 있어요. 감사합니다. 추석 잘 보내세요.
7년 전
참고로
Where (1) 은 MySql에서만 유효합니다.
Oracle에서는 관계연산자가 부적합하다고 나옵니다.
다른 DB의 접근에 좀더 유연하게 사용하려면
where ( 1=1)
로 사용하는게 더 좋습니다.
Where (1) 의 방식은
@Rido 님의 의견과 같이
조건에 따라 and 절을 추가할때 유용합니다.
비슷한구문은 GnuBoard 기본엔진에서도 발견할수있습니다.
/bbs/list.php 에서
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
의 문장에 사용된
get_sql_search() 를 살펴보면
중간에 return 0 이 등장합니다.
비교연산자의
1은
PHP / MySql / JavaScript 등에서 '참(true)'로 사용될수있습니다.
0은 '거짓(false)' 로 인식됩니다.
비교연산자에서 1 / 0 의 값을 이용하여 비교하는 구문을 작성하면
코드의 사이즈나 성능개선에 도움이 될겁니다.
답변에 대한 댓글 1개
7년 전
흠.. 제 경험상으로는 뒤의 where절을 if 문으로
뭔가 검색이 있을경우 없을경우...
where절을 비워둘때 많이 사용하곤 합니다.
답변을 작성하려면 로그인이 필요합니다.