【问题标题】:PHP Insert Json Array Data as Separate Row in Mysql [duplicate]PHP将Json数组数据插入Mysql中的单独行[重复]
【发布时间】:2020-12-31 06:04:56
【问题描述】:

我有一个如下的 json 数组列表。我正在尝试将每个项目作为单独的行插入 mysql 表中

 {"order_array":

  [{
   "qty":"1",
   "menu_name":"PARATHA (KAZI FARMS) 20 PCS",
   "sub_total":"265.0"
   },
 
   {
    "qty":"2",
    "menu_name":"PARATHA (KAZI FARMS) 10 PCS",
    "sub_total":"300.0"
   }],
  
  "amount":
         {
          "sub_total":"565.0",
          "discount":"0",
          "wallet":"0",
          "total_price":595,
          "delivery_charges":30           
         }
 }

我已经写了下面的代码,但它没有插入任何数据

$data = json_decode($_POST['json_order_list'], true);

foreach ($data as $row) {
   
   foreach ($array["order_array"] as $row) 
   {
      $item_name = $row['menu_name'];
      $qty = $row["qty"];
      $amount = $row['sub_total'];
      $order_id = '1';
      
      $sql_order = "INSERT INTO tbl_orders (item_name, qty, amount, order_id) 
            VALUES ('$item_name','$qty','$amount','$order_id')";
            
      mysqli_query($link, $sql_order);

    }
 }

我做错了什么

【问题讨论】:

  • 你得到的错误信息是什么?
  • 如果你看一下数据结构,你可能会发现你不需要第一个foreach ($data as $row) {
  • 没有错误!尝试不使用 foreach ($data as $row) { 但没有插入任何内容

标签: php mysql json arraylist


【解决方案1】:

对于您的数据结构,嵌套循环是多余的。您可以使用下一个代码作为解决方案:

$stmt = mysqli_prepare(
    $link, 
    "INSERT INTO tbl_orders (item_name, qty, amount, order_id) VALUES (?,?,?,?)"
);
   
foreach ($data["order_array"] as $row) 
{
    $item_name = $row['menu_name'];
    $qty = $row["qty"];
    $amount = $row['sub_total'];
    $order_id = '1';
    
    mysqli_stmt_bind_param($stmt, 'sddd', $item_name, $qty, $amount, $order_id);
    
    mysqli_stmt_execute($stmt);

}

PHPize.online查看工作代码

【讨论】:

  • 亲爱的@Cid,你完全正确。我更新了我的答案。
  • 由于$order_id是硬编码和静态的,所以不应该作为参数传递,而是直接写入prepared statement中。
猜你喜欢
  • 2016-06-16
  • 2011-10-17
  • 1970-01-01
  • 2019-12-05
  • 2016-01-22
  • 1970-01-01
  • 2017-02-10
  • 2013-11-30
  • 2012-07-21
相关资源
最近更新 更多