猿问

PHP 将 JSON 插入 MySql 多表

我有这个多维数组要插入到 mysql 数据库中:


{

  customer_id: "25",

  total: 238000,

  firstname: "oci",

  product: [

             {

              product_id: "6",

              product_name: "Orange"

             },

             {

              product_id: "5",

              product_name: "Melon"

             }

         ]

}

这是我的代码


$_POST = json_decode(file_get_contents('php://input'), true);

$customer_id= $_POST['customer_id'];

$total= $_POST['total'];

$firstname= $_POST['firstname'];


foreach ($_POST['product'] as $q_product => $v) {

    $product_id = $v['product_id'];

    $product_name= $v['product_name'];


$query = "INSERT INTO tbl_order

(order_id,customer_id,total,firstname) VALUES (NULL,'$customer_id','$total','$firstname')";

    

$queryy = "INSERT INTO tbl_order_product

    (order_id,product_id,product_name) VALUES (LAST_INSERT_ID(),$product_id,'$product_name')";

}

$result = mysqli_query($link, $query);

$resultt = mysqli_query($link, $queryy);

我无法将“queryy”插入到 tbl_order_product,只能插入 tbl_order 表 请帮我将“product”数组插入到 tbl_order_product 表中。


心有法竹
浏览 118回答 1
1回答

Cats萌萌

您的查询执行应该在循环内,否则只有最后的产品详细信息才会填充到两个表中。不要在 php 中使用 LAST_INSERT_ID(),而是使用 php 函数来实现相同的目的。不要将 order_id 作为传递null并确保它是自动增量的。使用prepared语句来防止sql注入。简单更新您的问题即可使其正常工作(不包括 sql 注入预防)foreach ($_POST['product'] as $q_product => $v) {    $product_id    = $v['product_id'];    $product_name  = $v['product_name'];    $query   =  "INSERT INTO tbl_order (customer_id,total,firstname)                 VALUES ('$customer_id','$total','$firstname')";        $result  =   mysqli_query($link, $query);    $last_id =   mysqli_insert_id($link);    $queryy  =  "INSERT INTO tbl_order_product (order_id,product_id,product_name)                  VALUES ($last_id ,$product_id,'$product_name')";    $resultt =   mysqli_query($link, $queryy);   }要使用准备好的语句来防止sql注入,请看看这些。PHP MySQL 准备语句使用 PDO 插入查询
随时随地看视频慕课网APP
我要回答