【问题标题】:Create Multidimensional JSON from PHP INNER JOIN table从 PHP INNER JOIN 表创建多维 JSON
【发布时间】:2019-04-16 01:24:40
【问题描述】:

我是一个新的学习者。我的 mySQL 数据库中有 3 个表,第一个“用户”、第二个 product_detail 和第三个 product_images。他们使用外键加入。像 : mySql Tables,我正在使用 php PDO oops 进行欲望输出。
我想用产品图片显示特定用户产品的列表。 所以我得到这样的对象:

[
   {
      "user_id": "1",
      "product_id": "7",
      "product_name": "product title",
      "product_description": "product description",
      "product_img_id": "1",
      "product_img_path": "/products/product1.jpg",
      "product_img_type": "main"
   },
   { ...  },
   { ...  },
   { ...  },
]

我的Php对象类函数代码:

function read(){
   $query = "SELECT
               p.user_id, p.product_id, p.product_name, p.product_description, 
           p1.product_img_id, p1.product_img_path, p1.product_img_type
    FROM        user AS p
    LEFT JOIN   product_description AS p1  
    ON       p.product_id = p1.product_id
    ORDER BY    p.user_id DESC, p.product_id DESC";
    $stmt = $this->conn->prepare($query);
    $stmt->execute();
    return $stmt;
}

这是我的创建对象代码:

if ($num > 0) {
   $products_arr = array();
   while ($row = $stmt -> fetch(PDO:: FETCH_ASSOC)) {
      extract($row);
      $product_item = array(
         "user_id" => $user_id,
         "product_id" => $product_id,
         "product_name" => $product_name,
         "product_description" => $product_description,
         "product_img_id" => $product_img_id,
         "product_img_path" => $product_img_path,
         "product_img_type" => $product_img_type
      );
      $products_arr[] = $product_item;
   }
   echo json_encode($products_arr);
}

所以我需要一个像这样的对象:

{
   "user_id" : "1",
      "product" : [
         {
            "user_id": "1",
            "product_id": "1",
            "product_name": "product title ",
            "product_description": "this is product description",
            "product_images": [
               {
                  "product_img_id": "1",
                  "product_img_path": "/products/product1.jpg",
                  "product_img_type": "main"
               },
               {...},
               {...},
               {...},
               {...}
            ]
         },
         {...},
         {...},
         {...}
      ]
}

我想要

{ **user**
   { all **product** of this user {
        all **images** of this product
     }
   }
}

【问题讨论】:

    标签: php mysql arrays json


    【解决方案1】:

    在您的 php 代码中,您可以将以下代码更改为底部的代码

    $product_item = array(
         "user_id" => $user_id,
         "product_id" => $product_id,
         "product_name" => $product_name,
         "product_description" => $product_description,
         "product_img_id" => $product_img_id,
         "product_img_path" => $product_img_path,
         "product_img_type" => $product_img_type
      );
    

    到以下:

    $product_image = array(
       "product_img_id"   => $product_img_id,
       "product_img_path" => $product_img_path,
       "product_img_type" => $product_img_type
    );
    
    $product = [
        "product_id" => $product_id,
        "product_name" => $product_name,
        "product_description" => $product_description,
        "product_images" => $product_image
    ];
    
    $product_item = array(
        "user_id" => $user_id,
        "product" => $product
    );
    

    【讨论】:

    • 不,在那之后,每个product_image都有show user_id,我希望每个产品都有所有图像数组。我认为在这项工作中使用 foreach 循环。
    • 你的意思是你希望 json 像 { user:[ "user_id":"1","product":[ ] ], user:[ "user_id":"1","product" :[ ] ] }
    • 我想要这样:{user : [{productName: '', productDiscription: '', mainImage: { 'imageurl': ''},{ 'imageurl': ''}, ] } ] }
    猜你喜欢
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2017-06-18
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2023-03-10
    相关资源
    最近更新 更多