PHP脚本和GEO-Lite数据库

PHP脚本和GEO-Lite数据库,php,mysql,ip,Php,Mysql,Ip,我需要从用户ip获取国家名称。据我所知,可以通过两种方式实现: 调用第三方api(但这可能很慢) 使用自己的数据库 因此,我从以下站点下载IP数据库: 在我的数据库中创建一个表,然后使用php脚本获取ip和国家 但这并不适用于我自己的国家:( 但在我检查vps时工作 目前我的ip是:180.211.255.204 所以,我想可能是数据库没有更新 但当我在网站演示测试中尝试相同的ip时,效果很好: 那么问题出在哪里?是数据库不同还是我的代码有问题 我很困惑:( 以下是我用来获取国家/地区信息的

我需要从用户ip获取国家名称。据我所知,可以通过两种方式实现:

  • 调用第三方api(但这可能很慢)
  • 使用自己的数据库
  • 因此,我从以下站点下载IP数据库:

    在我的数据库中创建一个表,然后使用php脚本获取ip和国家

    但这并不适用于我自己的国家:(

    但在我检查vps时工作

    目前我的ip是:180.211.255.204

    所以,我想可能是数据库没有更新

    但当我在网站演示测试中尝试相同的ip时,效果很好:

    那么问题出在哪里?是数据库不同还是我的代码有问题

    我很困惑:(

    以下是我用来获取国家/地区信息的代码:

    $strSQL="SELECT `country_name` FROM `IPCountry` WHERE INET_ATON('" . $strIP . "') BETWEEN ip_range_start_int AND ip_range_end_int LIMIT 1";
    

    提前感谢

    如果其他IP返回正确的结果,您的查询/代码可能没有问题

    以下是一些需要考虑/尝试的事项: 1.Maxmind本身(在那里演示)可能不使用自己数据库的lite版本,因此您在那里得到的结果可能更准确

  • 您还可以尝试在此处找到的GeoLite2数据库

  • 不要执行sql查询,您应该尝试maxmind提供的php扩展,因为它可能要快得多。有关如何使用此扩展的说明可以在此处找到:


  • 顺便说一句,我自己使用geolite2数据库,它返回“Bangladesh”作为您提供的IP的国家/地区。(请参阅:)

    先生,您是否像我一样在服务器上使用了相同的数据库?如果是,您能分享您使用的代码吗,我想您使用的数据库与我不同,或者使用的代码与我相同?我们将非常感谢您的帮助:)源代码可在此处获得:我使用的是GeoLite 2城市数据库,可在此处获得:您使用的是GeoLite数据库的最新版本吗?@MichaelC。是的,先生,我在发布此问题的前一天下载了数据库:(