![]() |
Подскажите как в Mysql. Сделать поиск по диапозону.
Подскажите как в 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 хранятся)
|
| Время: 02:29 |