Как я могу сбросить результаты в MySql БД?
Специально декодируйте gzip и анализируйте его в массиве HP, а затем записывайте в БД.
<?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 БД?
Специально декодируйте gzip и анализируйте его в массиве HP, а затем записывайте в БД.
Ваша проблема в том, что ответные данные закодированы в формате gzip.
Согласно API Parsehub документация,
Content-Encoding этого ответа всегда gzip.
Решение
Попробуйте расшифровать ответ gzip.
Ты можешь использовать gzdecode
расшифровать ответ gzip.
Также получите API с форматом json.
Вы можете тогда 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"}
]
}
Вам нужно перебрать yield_data
массив
Попробуйте следующее:
$arr = json_decode($results, true);
foreach($arr['yield_data'] as $item) {
$name = $item['name'];
$value = $item['value'];
}