Просмотр полной версии : Подскажите как в Mysql. Сделать поиск по диапозону.
троль909
26.11.2008, 19:07
Подскажите как в Mysql. Сделать поиск по диапозону.
У меня есть база Ip адресов. по диапозонам.
записаны они в 3 столбика. где 1 столбик начало диапозона 2 конец диапозона.
но я не могу понять как сделать запрос который делал поиск примерно по такой схеме 1 столбик<значение<2 столбик.
$temp = '255.255.';
...
$sql = 'SELECT * FROM ip_table WHERE ip LIKE "'.$temp.'%"
...
Выдаст тебе все адреса, начинающиеся на 255.255.
Все просто. Поля диапозонов должны быть числами, т.е. ip в формате longip. Это IP записанный в бинарном формате. Т.е. четыре байта abcd. В общем, по лонгайпи погугли.
Далее просто конвертишь адрес в целое и ищешь по БД типа:
$ip = 0x79000001;
select * from `ips` where `ip_from` <= $ip and `ip_to` >=$ip
Может не так объяснил, но, думаю, смысл ясен.
если это для определения страны то легче выдрать все это из админки напрмер связки armitage ;)))
.... where val >= v1 AND val <=v2
либо
.... where val between v1 AND v2
для диапазона IP-адресов, возможно, будет лучше применять INET_ATON для границ диапазона для преобразования ипов в целочисленное представление
krypt3r как я понял - там они и так уже представлены в таком виде :)
Не, это я писал, если вдруг ипы в поле типа varchar хранятся)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot