Insert nested JSON array as parameter in php mysql database

∥☆過路亽.° 提交于 2020-02-08 09:16:42

问题


I want to insert JSON parameters in my phpmyadmin database. I tried with below code but it didn't work. Kindly help me in this.

my JSON parameters are:

 `$ "address" = "bharuch"
 "customer_id" = "108"
 "products" = "[{"product_id":"1","product_name":"Potato","category_id":"1","subcategory_id":"1","product_memberprice":"11","product_nonmemberprice":"14","product_minquantity":"500 gms","product_image":"http:\/\/gaubharat.in\/gaubharat\/images\/potato.png","product_brand":"","sub_total":"28","user_qty":"2"},{"product_id":"2","product_name":"Tomato","category_id":"1","subcategory_id":"1","product_memberprice":"15","product_nonmemberprice":"18","product_minquantity":"500 gms","product_image":"http:\/\/gaubharat.in\/gaubharat\/images\/tomato.png","product_brand":"","sub_total":"18","user_qty":"1"}]"
"pincode" = "392025"
"order_totalamount" = "46"`

and my PHP code is:  

 <?php
    require("config.inc.php");
        $address = $_POST['address'];
        $customerid = $_POST['customer_id'];
        $amount = $_POST['order_totalamount'];
        $pincode = $_POST['pincode'];
        $product = json_decode($_POST['products']);

        foreach( $product as $key => $val)
        {
        $product_id = $val['product_id'];
        $product_name = $val['product_name'];
        $category_id = $val['category_id'];
        $subcategory_id = $val['subcategory_id'];
        $product_memberprice = $val['product_memberprice'];
        $product_nonmemberprice = $val['product_nonmemberprice'];
        $product_minquantity = $val['product_minquantity'];
        $product_image = $val['product_image'];
        $product_brand = $val['product_brand'];
        $sub_total = $val['sub_total'];
        $user_qty = $val['user_qty'];

        $query = "INSERT INTO `order`(cm_id,product_id,product_quantity,sub_total,order_totalamount,order_id,address,pincode,order_date) VALUES ('$customerid','$product_id','$user_qty','$sub_total','$amount','1','$address','$pincode',CURDATE())";



        if(!mysqli_query($db,$query))
        {
            die('Error : ' . mysql_error());
        }
        else{
           $response["success"] = 1;
           $response["message"] = "You order placed successfully!";
           echo json_encode($response);
        }
     }
   ?>

Kindly help me out in this.


回答1:


You need to add json_decode function for $_POST['products'] as:

$address = $_POST['address'];
$customerid = $_POST['customer_id'];
$amount = $_POST['order_totalamount'];
$pincode = $_POST['pincode'];
$products = json_decode($_POST['products']);
foreach($products as $key => $val){
...

UPDATE 1:

You have an issue in your query. You are using 9 columns and insert 10 values.

$query = "INSERT INTO `order`(cm_id,product_id,product_quantity,sub_total,order_totalamount,order_id,address,pincode,order_date) VALUES ('$customerid','$product_id','$user_qty','$sub_total','$amount','1','$address',,'$pincode',NOW())";

What is this ,, after $address?

UPDATE 2:

Modified code:

<?php
    require("config.inc.php");
    $address = $_POST['address'];
    $customerid = $_POST['customer_id'];
    $amount = $_POST['order_totalamount'];
    $pincode = $_POST['pincode'];
    $product = json_decode($_POST['products']);

    $values = array();
    foreach($product as $key => $val)
    {
        $product_id = $val->product_id;
        $product_name = $val->product_name;
        $category_id = $val->category_id;
        $subcategory_id = $val->subcategory_id;
        $product_memberprice = $val->product_memberprice;
        $product_nonmemberprice = $val->product_nonmemberprice;
        $product_minquantity = $val->product_minquantity;
        $product_image = $val->product_image;
        $product_brand = $val->product_brand;
        $sub_total = $val->sub_total;
        $user_qty = $val->user_qty;

        $values[] = "('$customerid','$product_id','$user_qty','$sub_total','$amount','1','$address','$pincode',CURDATE())";
    }

    if(count($values) > 0){
        $query = "INSERT INTO `order` (cm_id,product_id,product_quantity,sub_total,order_totalamount,order_id,address,pincode,order_date) VALUES ";

        $query .= implode(",",$values);
        if(!mysqli_query($db,$query))
        {
            echo "Error";
        }
        else
        {
           $response["success"] = 1;
           $response["message"] = "You order placed successfully!";
           echo json_encode($response);
        }
    }
?>


来源:https://stackoverflow.com/questions/34848563/insert-nested-json-array-as-parameter-in-php-mysql-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!