php - 将 JSON 响应插入具有多个响应的 MySQL 表中

标签 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) {


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

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

    $insert->execute();

不幸的是,只有当我的 JSON 响应中有 1 个项目返回时,这才有效。如果我有两个,对于除价格之外的所有值,它只会将单词 ARRAY 插入到我的 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"
}

任何提示将不胜感激!

最佳答案

它打印“Array”的原因是因为您尝试插入的对象是一个数组。

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

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

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

关于php - 将 JSON 响应插入具有多个响应的 MySQL 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27008747/

相关文章:

json - D3 map ,点击并从json中获取id

java - 如何识别文件类型是 json 数据还是 json 模式

javascript - 在 Angular 多语言中仅加载单一语言 JSON 文件

php - 获取所有类别和帖子模板上的 WordPress 当前类别 ID 和顶级父类别 ID

php - CakePHP 中的 MySQL 连接 -> 为什么我不断收到超过 30 秒的 fatal error ?

php - 合并或组合两个数组 - 仅当指定的 id 存在时

php - 如何使用 dom 解析器添加 php 标签

php - ajax php总是返回null

MySQL - 在同一个表中相乘字段,存储在同一个表中

mysql - 在 phpmyadmin 中执行准备好的语句查询时遇到问题