2013-07-08 5 views
-1

이 문제는 알려진 것입니까?MYSQL INET_ATON. 버그를 발견 했습니까?

select * from 'tablename' where INET_ATON('any valid ip'); 

전체 db를 표시합니다. 나는 우연히 ipaddress = INET_ATON('ip');을 추가하고 전체 DB를 cganged하는 것을 잊는다.

select * from 'tablename' 
where 1 

WHERE 절은 항상 true이기 때문에, 모든 테이블 행이 반환됩니다 : 당신이 쿼리 무엇

+1

다른 쿼리를 사용하여 "전체 db를 변경했습니다"그래도 되겠습니까? 또는 마치 이것이 모든 것을 선택하는 하위 쿼리의 일부였던 것처럼? –

+3

WHERE INET_ATON ('유효한 ip')'. MySQL은 이것을 boolean으로 변환하려고 시도 할 것이다. '0'보다 크기 때문에'WHERE TRUE' 또는 ('WHERE 1')을했을 때와 같습니다. 그래서 모든 행을 선택했습니다. 이 쿼리만으로는 아무 것도 업데이트하지 않습니다. 'UPDATE' 쿼리를 실행 했습니까? –

+0

update 'tablename'field1 = '0', field2 = '0', field3 = '0'으로 설정합니다. 여기서 INET_ATON ('any ip'); – user2561395

답변

1

는 기본적으로 동일합니다.

1

모든 행이 잘못 표시되지는 않습니다. IP가 유효하면 INET_ATON은 number> 0을 반환하고 IP가 유효하지 않으면 NULL을 반환합니다. 즉, 쿼리를 실행하는 것과 같습니다.

SELECT * FROM `tablename` WHERE 1 

(또는 다른 모든 양수)는 모든 행을 반환합니다.