Преобразование IP в длинный в MySQL

Я пытаюсь использовать таблицу ip2country чтобы показать флаги страны пользователей на моем веб-сайте.

Самое простое, что я придумал, – написать инструкцию SQL, которая выводит пользователей из таблицы сеансов и запросов, чтобы узнать, соответствует ли их соответствующий IP-адрес определенному диапазону для определения их страны / флага.

Это просто, но также и опасно, потому что, когда есть 300 пользователей в Интернете, чтобы показать, и я извлекаю их из таблицы сеансов, запрашивая их страны для отображения флагов, наверняка будет большое использование памяти.

Теперь я попробовал это сделать в одном запросе:

 SELECT s.session_ip, ipc.* FROM session AS s LEFT JOIN ip2country AS ipc ON ipc.ip_lo <= s.session_ip AND ipc.ip_hi >= s.session_ip WHERE s.session_time > '".( time() - 60) )."' 

Теперь ясно, что вышеуказанный запрос неверен, поскольку IP-адреса, сохраненные в таблице ip2country являются целыми числами, например 1000013824, а IP-адреса, хранящиеся в таблице сеанса, представляют собой строковые представления IP-адресов, например, 193.169.0.0

Я знаю, как конвертировать из IP в длинный PHP с помощью ip2long() , но есть ли какой-либо эквивалентный метод в MySQL, поэтому мне не нужно делать два запроса?

SELECT INET_NTOA (1000013824) -> 59.155.0.0

SELECT INET_ATON ('193.169.0.0') -> 3249078272

Наслаждаться 🙂