Convertendo um IP em um Longo no MySQL
Estou tentando usar oip2country
tabela para mostrar as bandeiras dos usuários no meu site.
A coisa mais simples que criei é escrever uma instrução SQL que leve os usuários da tabela de sessões e consultas para verificar se o respectivo IP está em um determinado intervalo para descobrir seu país / bandeira.
É simples, mas também perigoso, porque quando há 300 usuários on-line para mostrar e eu os pego na tabela de sessões, consultando seus países para exibir as bandeiras, certamente haverá um grande uso de memória.
Agora eu tentei fazer isso em uma única consulta:
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) )."'
Agora está claro que a consulta acima está errada porque os IPs salvos noip2country
tabela é um número inteiro, por exemplo 1000013824 e os IPs armazenados na tabela de sessões são as representações de string dos IPs, por exemplo 193.169.0.0
Eu sei como converter de um IP para um longo em PHP com oip2long()
, mas existe algum método equivalente no MySQL para que eu não precise fazer duas consultas?