我正在尝试从 API 获取数据并将其保存到 MySQL 数据库。问题是当我想回显数据以检查它是否获得了我收到此错误的所有值时:
Notice: Trying to get property of non-object
我的 JSON 数据如下所示:
{"AttractionInfo":[{"Id":"sprookjesbos","Type":"Attraction","MapLocation":"1","State":"open","StateColor":"green","WaitingTime":0,"StatePercentage":0},{"Id":"zanggelukkig","Type":"Show","MapLocation":".","State":"gesloten","StateColor":"clear"},
我认为这是因为它在数组中。因为当我使用这段代码时,它没有给出任何错误,但我必须定义数组的索引。遍历我的数据并将其放入变量的最佳方法是什么?
<?php
//Get content
$url = "https://eftelingapi.herokuapp.com/attractions";
$data = json_decode(file_get_contents($url));
//Fetch data
$attractieId = $data->AttractionInfo[0]->Id;
$attractieType = $data->AttractionInfo[0]->Type;
$attractieStatus = $data->AttractionInfo[0]->State;
$attractieStatusKleur = $data->AttractionInfo[0]->StateColor;
$attractieWachttijd = $data->AttractionInfo[0]->WaitingTime;
$attractieStatusPercentage = $data->AttractionInfo[0]->StatePercentage;
?>
我试图找到一些解决方案,但他们只使用了一个 foreach 循环。但我认为这不会奏效。谁能帮助我朝着正确的方向发展或告诉我如何解决这个问题?我不是很有经验,所以欢迎任何建议。提前致谢。
更新代码:
require 'database-connection.php';
//Get content
$url = "https://eftelingapi.herokuapp.com/attractions";
$data = json_decode(file_get_contents($url));
//Fetch data
$attractieId = isset($data->AttractionInfo->Id);
$attractieType = isset($data->AttractionInfo->Type);
$attractieStatus = isset($data->AttractionInfo->State);
$attractieStatusKleur = isset($data->AttractionInfo->StateColor);
$attractieWachttijd = isset($data->AttractionInfo->WaitingTime);
$attractieStatusPercentage = isset($data->AttractionInfo->StatePercentage);
$sql = "INSERT INTO attracties (attractieId, attractieType, attractieStatus, attractieStatusKleur, attractieWachttijd, attractieStatusPercentage)
VALUES ('$attractieId', '$attractieType', '$attractieStatus', '$attractieStatusKleur', '$attractieWachttijd', '$attractieStatusPercentage')";
if ($db->query($sql) === TRUE) {
echo "success";
} else {
echo "Error: " . $sql . "<br>" . $db->error;
}
它显示“成功”,但当我查看我的数据库时,它只插入了空数据。我需要将所有景点添加到我的数据库中,而不仅仅是一行。所以我需要遍历我的数据。
最佳答案
试试这个...
$content = json_decode(file_get_contents($url));
foreach($content->AttractionInfo as $data ){
$id = $data->Id;
$type = $data->Type;
$map = $data->MapLocation;
$state = $data->State;
$color = $data->StateColor;
if(!empty($data->WaitingTime)) {
$time = $data->WaitingTime;
}
if(!empty($data->StatePercentage)) {
$percent = $data->StatePercentage;
}
//persist your data into DB....
}
关于php - 如何遍历 JSON 数组并将数据放入变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47677818/