将JSON结果放入[]

时间:2018-08-08 16:44:52

标签: php json

我正在尝试将JSON API中的值添加到MySQL。问题是返回的结果不带[],所以我无法foreach它并将所有值插入数据库。

这是API URL

  

http://horoscope-api.herokuapp.com/horoscope/today/Gemini

这是我拥有的代码

$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处找到了一些有趣的想法,但似乎没有一个起作用。

以其他方式在[]中获得结果?

谢谢

1 个答案:

答案 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);