Json вложил Array в Mysql с помощью PHP - PullRequest
0 голосов
/ 06 октября 2018

Привет всем

Следующий код работает для первой части сценария Json, но когда я пытаюсь проанализировать весь сценарий Json, я получаю следующую ошибку ...

Примечание: Неопределенный индекс: site_nice в C: \ xampp \ htdocs \ working-scripts-jason \ jsontest9.php в строке 24

Примечание: неопределенный индекс: коэффициенты в C: \ xampp \ htdocs \ working-scripts-jason\ jsontest9.php в строке 25

следующий рабочий код PHP ... проанализированный в MySQL BD

<?php

    $host = "localhost";
    $username = "student";
    $password = "";
    $dbname = "football";
    $con = mysqli_connect($host, $username, $password, $dbname) or die('Error in Connecting: ' . mysqli_error($con));

    $st = mysqli_prepare($con, 'INSERT INTO epl_odds(sport_nice, team1, team2, commence_time, home_team) VALUES (?, ?, ?, ?, ?)');

    mysqli_stmt_bind_param($st, 'sssss', $sport_nice, $team1, $team2, $commence_time, $home_team);

    $filename = 'jsontest9.json';
    $json = file_get_contents($filename);

    $data = json_decode($json, true);

    foreach ($data as $row) {
      $sport_nice = $row['sport_nice'];
      $team1 = $row['teams']['0'];
      $team2 = $row['teams']['1'];
      $commence_time = $row['commence_time'];
      $home_team = $row['home_team'];

        mysqli_stmt_execute($st);
    }

    mysqli_close($con);
?>

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

<?php

    $host = "localhost";
    $username = "student";
    $password = "";
    $dbname = "football";
    $con = mysqli_connect($host, $username, $password, $dbname) or die('Error in Connecting: ' . mysqli_error($con));

    $st = mysqli_prepare($con, 'INSERT INTO epl_odds(sport_nice, team1, team2, commence_time, home_team, site_nice, h2h) VALUES (?, ?, ?, ?, ?, ?, ?)');

    mysqli_stmt_bind_param($st, 'sssssss', $sport_nice, $team1, $team2, $commence_time, $home_team, $site_nice, $h2h);

    $filename = 'jsontest9.json';
    $json = file_get_contents($filename);

    $data = json_decode($json, true);

    foreach ($data as $row) {
      $sport_nice = $row['sport_nice'];
      $team1 = $row['teams']['0'];
      $team2 = $row['teams']['1'];
      $commence_time = $row['commence_time'];
      $home_team = $row['home_team'];
      $site_nice = $row['sites']['site_nice'];
      $h2h = $row['sites']['odds']['h2h']['0'];

        mysqli_stmt_execute($st);
    }

    mysqli_close($con);
?>

Файл Json ...

[
  {
    "sport_key": "soccer_epl",
    "sport_nice": "EPL",
    "teams": [
      "Brighton and Hove Albion",
      "West Ham United"
    ],
    "commence_time": 1538766000,
    "home_team": "Brighton and Hove Albion",
    "sites": [
      {
        "site_key": "unibet",
        "site_nice": "Unibet",
        "last_update": 1538526493,
        "odds": {
          "h2h": [
            2.55,
            2.9,
            3.2
          ]
        }
      }
    ],
    "sites_count": 9
  }
]

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

sport_nice - это массив объектов sitescommence_time, home_team это объект.teams это массив.Поэтому вы должны попытаться получить данные, как показано ниже:

foreach ($data as $row) {
      $sites = $row->sites;
      $teams = $row->teams;
      $sport_nice = $sites->sport_nice;
      $team1 = $teams[0];
      $team2 = $teams[1];
      $commence_time = $row->commence_time;
      $home_team = $row->home_team;

        mysqli_stmt_execute($st);
    }

Примечание: Сначала вы печатаете данные $row, как в цикле foreach, и смотрите формат данных.

<code>echo '<pre>';
print_r($row);
echo '
«;
0 голосов
/ 06 октября 2018

sites - это массив, поэтому вам нужно пройти через него, чтобы получить данные, или просто использовать его, если когда-либо будет только один:

$site_nice = $row['sites'][0]['site_nice'];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...