我正在尝试将JSON API中的值添加到MySQL。问题是返回的结果不带[],所以我无法foreach它并将所有值插入数据库。
这是API URL
这是我拥有的代码
$data = file_get_contents(
"https://horoscope-api.herokuapp.com/horoscope/today/Gemini",
true);
$array = json_decode($data, true); //Convert JSON String into PHP Array
foreach($array as $row) //Extract the Array Values by using Foreach Loop
{
$query .= "INSERT INTO zodiac(date, horoscope, sunsign, url)
VALUES (
'" . $row["date"]. "',
'" . $row["horoscope"]."',
'" . $row["sunsign"]."',
'" . $row["sunsign"]."'
); "; // Make Multiple Insert Query
}
如果我合并$ data =“ [$ data]”; (带引号和不带引号)可以正确打印,但不能解析为数组。或者至少我不知道该怎么做。 我尝试寻找某种方法来解决此问题,并在How to convert JSON string to array处找到了一些有趣的想法,但似乎没有一个起作用。
以其他方式在[]中获得结果?
谢谢
答案 0 :(得分:1)
如果我没有误解您的要求,那么这应该对您有用。我已经看到了API响应,它只是返回一个星座的单个结果。尽管我只是使用您现有的代码来使其可行(不建议使用),但我希望您可以尝试使用PDO。
<?php
$data = file_get_contents("https://horoscope-api.herokuapp.com/horoscope/today/Gemini",true);
$array[] = json_decode($data, true); //Convert JSON String into PHP Array
$query = '';
foreach($array as $key=>$row) //Extract the Array Values by using Foreach Loop
{
$query.= "INSERT INTO zodiac(date,horoscope,sunsign,url)
VALUES ('". $row["date"]."','".$row["horoscope"]."','".$row["sunsign"]."','".$row["sunsign"]."'); "; // Make Multiple Insert Query
}
echo $query;
?>
使用PDO:
$data = file_get_contents("https://horoscope-api.herokuapp.com/horoscope/today/Gemini",true);
$array = json_decode($data, true); //Convert JSON String into PHP Array
$sql = "INSERT INTO zodiac (date, horoscope, sunsign) VALUES (:date, :horoscope, :sunsign)";
$stmt= $dpo->prepare($sql);
$stmt->execute($array);