Php 将JSON响应插入具有多个响应的MySQL表

Php 将JSON响应插入具有多个响应的MySQL表,php,mysql,json,Php,Mysql,Json,我有一个PHP文件,可以将JSON响应中的数据插入MySQL表。代码如下所示: $jsondata = json_decode($result); $results = $jsondata->results; $insert = $con->prepare('INSERT INTO History (URL, Product, Price, Status) VALUES(?, ?, ?, ?) '); foreach($results as $val) {

我有一个PHP文件,可以将JSON响应中的数据插入MySQL表。代码如下所示:

    $jsondata = json_decode($result);
    $results = $jsondata->results;

$insert = $con->prepare('INSERT INTO History (URL, Product, Price, Status) VALUES(?, ?, ?, ?) ');

    foreach($results as $val) {


    $insert->bind_param('ssss', $val->title, $val->title, $val->price, $val->{'status/_text'});

    // //echo $val->status;
    // echo $val->{'status/_title'};

    $insert->execute();
不幸的是,这只有在JSON响应中返回1项时才起作用。如果我有两个值,对于除price之外的所有值,它只是将单词数组插入我的MySQL表中

下面是一个包含1项的JSON响应示例:

{
   "offset": 0,
   "results": [
      {
         "status/_text": "Available",
         "status/_source": "itemID.2251694279/example333632279/",
         "status/_title": "Available",
         "title": "Product 1",
         "status": "http://www.example.comitemID.2251694279/example333632279/"
      }
   ],
   "cookies": [
      "SESSION=\""
   ],
   "GUID": "123123123",
   "GUID2": "123123123",
   "pageUrl": "http://www.example.com/279"
}
下面是一个包含2项的JSON响应示例:

{
   "offset": 0,
   "results": [
      {
         "status/_text": [
            "Available",
            "Available"
         ],
         "price": "$39.29",
         "status/_source": [
            "itemID.30227999279/example333632279/",
            "itemID.30201279279/example333632279/"
         ],
         "status/_title": [
            "Available",
            "Available"
         ],
         "title": [
            "Product 1",
            "Product 2"
         ],
         "status": [
            "http://www.example.comitemID.30227999279/example333632279/",
            "http://www.example.comitemID.30201279279/example333632279/"
         ]
      }
   ],
   "cookies": [
      "SESSION=\"m\";Port=\"20\"",
      "X-AK-Origin-Instance=\"1\";Path=\"/\";Domain=\"www.example.com\";Port=\"20\""
   ],
   "GUID": "123123123",
   "GUID2": "123123123",
   "pageUrl": "http://www.example.com/279"
}

任何提示都将不胜感激

之所以打印数组,是因为您尝试插入的对象是数组

您可以尝试以下方法查看值:

for ($i=0; $i < count($results->title); $i++) {
  echo $results->title[$i] . "<br/>";
}

但我认为要解决您的问题,您可以尝试更改服务器端生成Json对象的方式。

您需要从一个循环开始,这可能是将Json排序到一个数组中的最简单方法,该数组包含子数组,子数组中包含easy属性,而不是按列/属性名包含所有子数组。然后循环它并执行插入,或者更好的是,创建一个包含多个语句的插入。price总是一个元素吗?如果不止一个字段,那么其他字段的长度是否都相同?价格可以不止一个-除了价格之外,其他字段可能都相同Hello-我无法更改服务器端json,因为它来自第三方应用程序。关于如何将该for语句放入SQL insert中,有什么建议吗?我似乎无法从json数组中获取数据。您是否尝试过使用我上面的示例代码模板?尝试在脚本中插入上面的代码,它应该在JSon对象中打印标题。如果可行,尝试在Json对象中添加除price.Hi Nikko之外的其他变量的变量-这给了我一个消息通知:如果我将非对象的属性放在for each中,则尝试获取它的属性。如果我只放置echo$val->title[0]。我得到了一个价值回报!不确定如何在foreach中循环此项以获得所有结果?嗨,AAA,很抱歉,它应该是$results->title[0]而不是$val->title[$i]