0

嗨,我正在尝试从他们的 IP 地址中找到我的用户所在的城市,以便能够在我的数据库中显示靠近他们/在他们所在地区的用户列表。

我一直在看这个api:

http://ipinfodb.com/ip_location_api.php

我已经注册并获得了一个 api 密钥,但我不确定从这里去哪里。这是他们用来获取用户位置的示例代码:

<?php
include('ip2locationlite.class.php');

//Load the class
$ipLite = new ip2location_lite;
$ipLite->setKey('<api key>');

//Get errors and locations
$locations = $ipLite->getCity($_SERVER['REMOTE_ADDR']);
$errors = $ipLite->getError();

//Getting the result
echo "<p>\n";
echo "<strong>First result</strong><br />\n";
if (!empty($locations) && is_array($locations)) {
  foreach ($locations as $field => $val) {
    echo $field . ' : ' . $val . "<br />\n";
  }
}
echo "</p>\n";

//Show errors
echo "<p>\n";
echo "<strong>Dump of all errors</strong><br />\n";
if (!empty($errors) && is_array($errors)) {
  foreach ($errors as $error) {
    echo var_dump($error) . "<br /><br />\n";
  }
} else {
  echo "No errors" . "<br />\n";
}
echo "</p>\n";

?>

但是我现在将如何设置一个 mysql 查询,说明如果用户位置是伦敦并且用户在数据库中被列为伦敦,然后将这些显示给用户?

如果有人可以提供帮助,我将非常感谢您朝着正确的方向前进,谢谢。

4

1 回答 1

0

这是一个示例(不知道您的数据库结构且未经测试;)。将其插入到 foreach ($locations as $field => $val) 循环中,如下所示:

foreach ($locations as $field => $val) {
    echo $field . ' : ' . $val . "<br />\n";

    $mysqli = new mysqli('<mysql server>', '<mysql user>', '<mysql password>', '<database>');
    if(mysqli_connect_errno()) {
        echo 'Error: Unable to connect to Database; ';
    } else {
        if ($stmt_evt = $mysqli -> prepare('SELECT <other_users>, ... FROM <your table> WHERE <user_location> LIKE ? ORDER BY <whatever>')) {
            $stmt_evt -> bind_param('s', $val);
            $stmt_evt -> execute();
            $stmt_evt -> bind_result($<other_users>, $...);
            while ($stmt_evt->fetch()) {
                echo 'Other users in your area: '.$<other_users>;
            }
        } else {
            echo 'Error: Unable to prepare Event statement.';
        }
    }
}
于 2013-03-27T06:36:17.317 回答