将 json 从 curl 存储到 mysql table
Storing json from curl to mysql table
我有一个功能可以存储用户的 IP 地址,然后向第三方 API 发出 curl
请求以根据 ip 凭据获取地理位置。返回数据为json格式。
问题:目前的功能有效,我可以回显返回位置
echo $api_result['country_name'];
我正在努力实现的是了解如何将这些值存储在我的数据库中。
当我 运行 插入时,我的数据库状态中的列 array 但我已经使用 json_decode
.
store_each_visitors_ip_address_and_jurisdiction() {
$date = date("d/m/Y");
$visitors_ip = $_SERVER["REMOTE_ADDR"];
$query = query("SELECT * FROM unique_visitors WHERE 'todays_date' ='$date'");
$result = mysqli_query($connection,$query);
if($result->num_rows == 0) {
$access_key = '12345678912345';
$ch = curl_init('http://api.ipstack.com/'.$visitors_ip.'?access_key='.$access_key.'');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch); curl_close($ch);
$api_result = json_decode($json, true);
$api_result_two = json_decode($json, true);
echo $api_result['country_name'];
echo $api_result_two['region_name'];
$insert_query = query("INSERT INTO unique_visitors(todays_date, ip_address, country, region) VALUES(CURRENT_TIMESTAMP,'{$visitors_ip}','{$api_result}','{$api_result_two}') ");
confirm($query);
}else{
$row = fetch_array($result);
if(!preg_match('/'. $visitors_ip .'/i', $row['ip_address'])) {
$newIp = $row['ip_address'] . $visitors_ip;
$updateQuery = "UPDATE unique_visitors SET ip_address = '$newIp',
'views' = 'views'+1 WHERE 'todays_date'= '$date'";
mysqli_query($connection,$updateQuery);
}
}
}
不能在table中存储数组,需要存储数组的具体元素。
$insert_query = query("INSERT INTO unique_visitors(todays_date, ip_address, country, region)
VALUES(CURRENT_TIMESTAMP,'{$visitors_ip}','{$api_result['country_name']}','{$api_result['region_name']}') ");
但是你应该使用准备好的语句来防止SQL注入。
$insert_stmt = $connection->prepare("INSERT INTO unique_visitors(todays_date, ip_address, country, region)
VALUES (CURRENT_TIMESTAMP, ?, ?, ?)";
$insert_stmt->bind_param("sss", $visitors_ip, $api_result['country_name'], $api_result['region_name']);
$insert_stmt->execute();
我有一个功能可以存储用户的 IP 地址,然后向第三方 API 发出 curl
请求以根据 ip 凭据获取地理位置。返回数据为json格式。
问题:目前的功能有效,我可以回显返回位置
echo $api_result['country_name'];
我正在努力实现的是了解如何将这些值存储在我的数据库中。 当我 运行 插入时,我的数据库状态中的列 array 但我已经使用 json_decode .
store_each_visitors_ip_address_and_jurisdiction() {
$date = date("d/m/Y");
$visitors_ip = $_SERVER["REMOTE_ADDR"];
$query = query("SELECT * FROM unique_visitors WHERE 'todays_date' ='$date'");
$result = mysqli_query($connection,$query);
if($result->num_rows == 0) {
$access_key = '12345678912345';
$ch = curl_init('http://api.ipstack.com/'.$visitors_ip.'?access_key='.$access_key.'');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch); curl_close($ch);
$api_result = json_decode($json, true);
$api_result_two = json_decode($json, true);
echo $api_result['country_name'];
echo $api_result_two['region_name'];
$insert_query = query("INSERT INTO unique_visitors(todays_date, ip_address, country, region) VALUES(CURRENT_TIMESTAMP,'{$visitors_ip}','{$api_result}','{$api_result_two}') ");
confirm($query);
}else{
$row = fetch_array($result);
if(!preg_match('/'. $visitors_ip .'/i', $row['ip_address'])) {
$newIp = $row['ip_address'] . $visitors_ip;
$updateQuery = "UPDATE unique_visitors SET ip_address = '$newIp',
'views' = 'views'+1 WHERE 'todays_date'= '$date'";
mysqli_query($connection,$updateQuery);
}
}
}
不能在table中存储数组,需要存储数组的具体元素。
$insert_query = query("INSERT INTO unique_visitors(todays_date, ip_address, country, region)
VALUES(CURRENT_TIMESTAMP,'{$visitors_ip}','{$api_result['country_name']}','{$api_result['region_name']}') ");
但是你应该使用准备好的语句来防止SQL注入。
$insert_stmt = $connection->prepare("INSERT INTO unique_visitors(todays_date, ip_address, country, region)
VALUES (CURRENT_TIMESTAMP, ?, ?, ?)";
$insert_stmt->bind_param("sss", $visitors_ip, $api_result['country_name'], $api_result['region_name']);
$insert_stmt->execute();