mysql — переполнение стека API Parsehub

Как я могу сбросить результаты в 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, а затем записывайте в БД.

0

Решение

Данные кодируются в gzip

Ваша проблема в том, что ответные данные закодированы в формате 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"}
]
}
0

Другие решения

Вам нужно перебрать yield_data массив
Попробуйте следующее:

$arr = json_decode($results, true);
foreach($arr['yield_data'] as $item) {
$name = $item['name'];
$value = $item['value'];
}

демонстрация

0

По вопросам рекламы [email protected]