如何将结果转储到MySql db中?专门解码gzip并将其解析为HP数组,然后转储到db中。
<?php
$connection = mysqli_connect("localhost","root","Aruns@cal");
if (!$connection) {
die("Database connection failed: " . mysqli_error());
}
$db_select = mysqli_select_db($connection, "arunslocal");
if (!$db_select) {
die("Database selection failed: " . mysqli_error());
}
$params = http_build_query(array(
"api_key" => "xxxxxxx",
"format" => "JSON"
));
$result = file_get_contents(
'https://www.parsehub.com/api/v2/projects/tmnx0bN0Ty0U/last_ready_run/data?'.$params,
false,
stream_context_create(array(
'http' => array(
'method' => 'GET'
)
))
);
echo "1";
$arr = json_decode($result, true);
echo "2";
foreach((array)$arr as $item){
echo "3";
$name = $item['name'];
$value = $item['value'];
echo "4";
$sql = "INSERT INTO `arunslocal`.`scrap_yielddata`( `yield_name`, `yield_value`) VALUES(1,3)";
//$sql = "INSERT INTO `arunslocal`.`scrap_yielddata`( `yield_name`, `yield_value`) VALUES('$name','$value')";
if(!mysqli_query($connection,$sql))
{
die('Error : ' . mysqli_error($connection));
}
}
echo "5";
?>如何将结果转储到MySql db中?专门解码gzip并将其解析为HP数组,然后转储到db中。
发布于 2017-12-19 05:25:59
数据是gzip编码的。
您的问题是响应数据是gzip编码的。
根据parsehub的API 文档,
此响应的内容编码始终是gzip。
溶液
尝试解码gzip响应。
您可以使用gzdecode来解码gzip响应。
还可以用json格式获取API。
然后可以使用json_decode将其转换为数组并使用它。
示例
<?php
$params = http_build_query(array(
"api_key" => "xxxxxx",
"format" => "json"
));
$result = file_get_contents(
'https://www.parsehub.com/api/v2/projects/tmnx0bN0Ty0U/last_ready_run/data?'.$params,
false,
stream_context_create(array(
'http' => array(
'method' => 'GET'
)
))
);
$result = gzdecode($result);
echo $result;
$parsed_result = json_decode($result, true);
$yield_data = $parsed_result['yield_data'];
foreach($yield_data as $item){
$name = $item['name'];
$value = $item['value'];
$sql = "INSERT INTO `arunslocal`.`scrap_yielddata`( `yield_name`, `yield_value`) VALUES('{$name}',{$value})";
if(!mysqli_query($connection,$sql)) {
die('Error : ' . mysqli_error($connection));
}
}
?>输出
{
"yield_data": [
{
"name": "Sri Lanka 3M",
"value": "7.760"
},
{
"name": "Sri Lanka 6M",
"value": "8.500"
},
{
"name": "Sri Lanka 1Y",
"value": "9.054"
},
{
"name": "Sri Lanka 2Y",
"value": "9.283"
},
{
"name": "Sri Lanka 3Y",
"value": "9.588"
},
{
"name": "Sri Lanka 4Y",
"value": "9.850"
},
{
"name": "Sri Lanka 5Y",
"value": "10.000"
},
{
"name": "Sri Lanka 6Y",
"value": "10.100"
},
{
"name": "Sri Lanka 7Y",
"value": "10.150"
},
{
"name": "Sri Lanka 8Y",
"value": "10.200"
},
{
"name": "Sri Lanka 9Y",
"value": "10.250"
},
{
"name": "Sri Lanka 10Y",
"value": "10.300"
},
{
"name": "Sri Lanka 15Y",
"value": "10.575"
}
]
}发布于 2017-12-19 05:36:33
您需要循环遍历yield_data数组,尝试如下:
$arr = json_decode($results, true);
foreach($arr['yield_data'] as $item) {
$name = $item['name'];
$value = $item['value'];
} https://stackoverflow.com/questions/47880413
复制相似问题