【发布时间】:2014-12-09 09:13:11
【问题描述】:
我正在尝试遍历一组包含用户 IP 的记录。我正在使用 freegeoip.net API 服务进行地理定位。在 users 表中,我存储了应用程序用户的 IP,现在我有兴趣通过调用 API 来单独更新所有记录,让它返回我使用 file_get_contents 获取的 JSON 内容,然后输入到 2基于键的字段(即城市、区域名称 AKA 州)。
从 API 返回的示例数据示例:http://freegeoip.net/json/
我基本上有 3 列:[ip]、[city]、[state]
我已经填充了 IP 数据。
下面是我的 PHP 代码的开始,它是我的 SELECT 方法的修改。现在我需要单独执行 UPDATE 查询。 file_get_contents 内部是 freegeoip 的 API URL。
<?php
$con=mysqli_connect("localhost","user","password","database");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM user_log");
while($row = mysqli_fetch_array($result)) {
$pageContent = file_get_contents('http://freegeoip.net/json/' . $row['ip']);
$parsedJson = json_decode($pageContent);
echo "<br />The IP is: " . $row['ip'];
echo "<br />The Location is: " . $parsedJson;
}
mysqli_close($con);
?>
问题:我将如何修改此代码以遍历每个 MySQL 记录(基于 IP 列)并更新从我的 API 收到的相关字段数据(城市和州)?
【问题讨论】:
-
问题有点不清楚。你到底想达到什么目的?你想在某处存储 $parsedJson 数据吗?
-
我更新了一个希望更清晰的问题。
-
$parsedJson 解码后是一个数组 - 因此要获取城市和州,您可以使用以下代码
$parsedJson['city'] $parsedJson['country_name']可以使用从 API 返回的任何其他值来获取您的值列表可以做print_r($parsedJson);
标签: php mysql json mysqli insert-update