【问题标题】:How to loop through PHP code to insert JSON data into MySQL database如何循环通过 PHP 代码将 JSON 数据插入 MySQL 数据库
【发布时间】:2019-05-27 05:42:15
【问题描述】:

这是我当前的 PHP 代码 - 这只引入一行数据,我需要它循环遍历动态和变化的 JSON - 它在不同时间可能是 5 行或 10 行。

我尝试了多种不同的方法来 foreach() 循环遍历数据,但都没有奏效。

$jsonCont = file_get_contents('nba.json');

$data = json_decode($jsonCont, true);

    $tip = $data['data'][0]['commence_time'];
    $teama = $data['data'][0]['teams'][0];
    $linea = $data['data'][0]['sites'][0]['odds']['spreads']['points'][0];
    $teamb = $data['data'][0]['teams'][1];
    $lineb = $data['data'][0]['sites'][0]['odds']['spreads']['points'][1];

$sql = "INSERT INTO nbagames(tip, teama, linea, teamb, lineb)
VALUES('$tip', '$teama', '$linea', '$teamb', '$lineb')";
if(!mysqli_query($conn,$sql))
{
    die('Error : ' . mysql_error());
}

我需要在这段代码中添加什么,以便它循环并抓取所有数据,而不仅仅是 1 行?

编辑:回复添加 JSON 数据 - 这是一个示例 - 我需要获取每场比赛 - 但我不需要多个站点(如果有超过 1 个站点有几率)

data: [
{
sport_key: "basketball_nba",
sport_nice: "NBA",
teams: [
"Charlotte Hornets",
"Washington Wizards"
],
commence_time: 1546128000,
home_team: "Washington Wizards",
sites: [
{
site_key: "mybookieag",
site_nice: "MyBookie.ag",
last_update: 1546136064,
odds: {
spreads: {
odds: [
1.8,
1.901
],
points: [
"3.5",
"-3.5"
]
}
}
}
],
sites_count: 1
},
{
sport_key: "basketball_nba",
sport_nice: "NBA",
teams: [
"Houston Rockets",
"New Orleans Pelicans"
],
commence_time: 1546128600,
home_team: "New Orleans Pelicans",
sites: [
{
site_key: "mybookieag",
site_nice: "MyBookie.ag",
last_update: 1546136064,
odds: {
spreads: {
odds: [
1.855,
1.855
],
points: [
"-6.5",
"6.5"
]
}
}
}
],
sites_count: 1
},
{
sport_key: "basketball_nba",
sport_nice: "NBA",
teams: [
"Atlanta Hawks",
"Cleveland Cavaliers"
],
commence_time: 1546130400,
home_team: "Atlanta Hawks",
sites: [
{
site_key: "mybookieag",
site_nice: "MyBookie.ag",
last_update: 1546136064,
odds: {
spreads: {
odds: [
1.855,
1.855
],
points: [
"-7.5",
"7.5"
]
}
}
}
],
sites_count: 1
},
{
sport_key: "basketball_nba",
sport_nice: "NBA",
teams: [
"Boston Celtics",
"Memphis Grizzlies"
],
commence_time: 1546132200,
home_team: "Memphis Grizzlies",
sites: [
{
site_key: "mybookieag",
site_nice: "MyBookie.ag",
last_update: 1546136064,
odds: {
spreads: {
odds: [
1.901,
1.855
],
points: [
"10.5",
"-10.5"
]
}    
}
},
{
site_key: "bovada",
site_nice: "Bovada",
last_update: 1546136030,
odds: {
spreads: {
odds: [
1.952381,
1.87
],
points: [
"6.5",
"-6.5"
]
}

【问题讨论】:

    标签: php mysql json foreach


    【解决方案1】:

    你可以使用foreach:

    $data = json_decode($jsonCont, true);
    
    foreach($data['data'] as $line){
        $tip = $line['commence_time'];
        $teama = $line['teams'][0];
        $linea = $line['sites'][0]['odds']['spreads']['points'][0];
        $teamb = $line['teams'][1];
        $lineb = $line['sites'][0]['odds']['spreads']['points'][1];
    
        $sql = "INSERT INTO nbagames(tip, teama, linea, teamb, lineb)
        VALUES('$tip', '$teama', '$linea', '$teamb', '$lineb')";
        if(!mysqli_query($conn,$sql))
        {
            die('Error : ' . mysql_error());
        }
    }
    

    【讨论】:

    • 这行得通。非常感谢。我正在使用 foreach($data as $data) - 我不完全理解 foreach($data['data'] as $line) 结构 - 我将自己做一些研究以更好地了解这一点。
    • 您也可以在主 foreach 中循环站点。取决于你的数组结构。
    猜你喜欢
    • 2015-07-08
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 2020-01-12
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多