从Import.io导入MySQL DB中的JSON

时间:2014-07-15 12:01:35

标签: php mysql json import.io

我尝试使用PHP将数据从JSON Feed导入MySQL数据库。

我有下面的代码但是没有随处可见。

我一直只是Connected to Database,但JSON数据中没有任何内容。

使用import.io从Feed创建JSON数据。

任何帮助表示赞赏

JSON数据here

    <?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 个答案:

答案 0 :(得分:1)

首先,我们必须获取每一行,然后再执行另一个循环来获取该行中包含的每个值,这样我们将获得一个2D数组,其中包含要格式化的数据,以便放入db中。

$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();
}