Как насчет того, чтобы попробовать, чтобы увидеть, что происходит?

аюсь использовать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, поэтому мне не нужно делать два запроса?

Ответы на вопрос(1)

Ваш ответ на вопрос