215, 1/11 회원가입  로그인  
   ka0r1
   ddd.JPG (52.2 KB), Download : 37     [오른쪽 버튼 눌러 다운 받기]
   MySQL 질문

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=145 [복사]



select * from books where author='Thomas Down' or '1=1'; 이 값을 입력하면
1=1값이 참이여서 논리연산자에 의해 참을 리턴하는데...
참을 리턴하는데 왜 books 데이터베이스의 모든 정보가 나오는 걸까요?

  Hit : 4553     Date : 2013/04/15 11:27



    
cd80 sql구문에서 where문은 쿼리의 결과중 where문에 참이되는 결과들만 리턴이 되게 합니다
select * from books 를 하게되면 books 테이블의 모든 데이터를 출력하는데
여기서 where author='Thomas Down' 이라는 조건을 걸게되면
모든 데이터중 author 필드의 데이터가 Thomas Down인 컬럼만을 반환합니다
근데 이때 author = 'Thomas Down' or '1=1'; 을 하게되면 where문은 항상 참이 되므로
where문에 의해 필터링 되는 결과가 없어지게 됩니다
따라서 테이블내의 모든 데이터가 반환되는것입니다
2013/04/16  
ka0r1 cd80 // 와... 역시 ㅋㅋㅋㅋ 땡큐! 2013/04/16