2013-07-08 3 views
-1

Это известная проблема?MYSQL INET_ATON. Я нашел ошибку или это известно?

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

Показать все db. Я случайно забыл добавить ipaddress = INET_ATON('ip'); и переключил весь db.

+1

Вы «изменили весь db» с другим запросом позже, правда? Или, как если бы это было частью подзапроса, который в конечном итоге выбрал все? –

+3

'WHERE INET_ATON ('any valid ip')'. MySQL попытается преобразовать это в логическое. Поскольку это больше, чем '0', это похоже на то, что вы делали' WHERE TRUE' или ('WHERE 1'). Вот почему он выбрал все строки. Только этот запрос ничего не обновит. Вы запустили запрос 'UPDATE'? –

+0

update 'tablename' set field1 = '0', field2 = '0', field3 = '0', где INET_ATON ('any ip'); – user2561395

ответ

1

Что вы запрашиваете с в основном эквивалентна:

select * from 'tablename' 
where 1 

Предложение WHERE всегда верно, поэтому все строки таблицы возвращаются.

1

Я не вижу ничего плохого во всех возвращаемых строках. INET_ATON вернет номер> 0, если IP действителен ИЛИ NULL, если IP недействителен. Это означает, что это вопрос выдачи

SELECT * FROM `tablename` WHERE 1 

(или любое другое положительное число), которое вернет все строки.

Смежные вопросы