Импорт JSON в БД MySQL из Import.io

Я пытаюсь импортировать данные из фида JSON, используя PHP, в базу данных MySQL.

У меня есть код ниже, но я ничего не получу с ним.

Я продолжаю получать Connected to Database но ничего не извлекается из данных JSON.

Данные JSON создаются из канала с использованием import.io.

Любая помощь приветствуется

Данные JSON здесь

    <?php

$data = file_get_contents('https://query.import.io/store/connector/e18543ae-48d1-47d3-9dc7-c3d55cab2951/_query?_user=363ec2db-fb95-413f-9a20-3fe89acbf061&_apikey=HOXvwSMX4HlmqH123i5HeELV6BwKq%2BFRInTzXc4nfl5VtP0pJyChxMT9AEiu1Ozi0vWZmUB%2BKcSsxHz2ElHNAg%3D%3D&format=JSON&input/webpage/url=http%3A%2F%2Fsports.yahoo.com%2Fgolf%2Fpga%2Fleaderboard');

$array = json_decode($data, true);
$rows = array();   

$index = 0;

foreach($array['results'] as $mydata)
    {
        print_r($mydata);
        echo "<br>";

        foreach($mydata as $key => $value)
            {
                print_r ($key);
                print_r ($value);
                echo $index;
                echo "<br><br>";
                $rows[] = "('" . $value . "')";
            }   
        echo "<br>";
        $index++;
    }

echo "<br><br><br>";
print_r ($rows);

$values = implode(",", $rows);
echo "<br><br><br>";
print_r ($values);

$hostname = 'localhost';                 // write the rest of your query
$username = 'username';
$password = 'password';

try 
{
    $dbh = new PDO("mysql:host=$hostname;dbname=database", $username, $password);
    echo 'Connected to database<br />'; // echo a message saying we have connected 
    $count = $dbh->exec("INSERT INTO import_io (total, round_1, round_2, round_3, round_4, thru, name/_source, name, today, name/_text, strokes) VALUES ($values)"); 
    echo $count;// echo the number of affected rows
    $dbh = null;// close the database connection
}
catch(PDOException $e)
{
    echo $e->getMessage();
}

?>

1 ответ

Решение

Сначала мы должны извлечь каждую строку, а затем сделать еще один цикл для извлечения каждого значения, содержащегося в этой строке, таким образом, мы получим 2D-массив, содержащий данные для форматирования, чтобы поместить их в базу данных.

$i = 0;    
foreach($array['results'] as $result){
    foreach ($result as $key => $value)
        $rows[$i][] = "'" . $value . "'";
    $i++;
}

Затем здесь мы форматируем данные, чтобы соответствовать нашему запросу, который будет выполняться для каждой строки, выбранной ранее.

try{
    $dbh = new PDO("mysql:host=$hostname;dbname=database", $username, $password);
    foreach ($rows as $row) {
        $row = implode(",",$row); //making a string from an array with each item separated by comma
        $query = "INSERT INTO import_io (total, round_1, round_2, round_3, round_4, thru, name/_source, name, today, name/_text, strokes) VALUES ($row)<br>"; 
        $count = $dbh->exec($query); 
    }
    $dbh = null;// close the database connection
}catch(PDOException $e){
    echo $e->getMessage();
}
Другие вопросы по тегам