-2

I am using PHP 7.2 MySQLi add to cart. insert product like guest user detail. and product detail all data is inserted but product-related data is not. I want to insert data product detail. inserted data like

(productImage, productName, product_qty, price) insert by fetching in database foreach loop implode function

please check it. and help me...

  <?php   
        $msg='';
        if(isset($_POST['submit'])) {
        $address = mysqli_real_escape_string($conn, $_POST['address']);
        $total = mysqli_real_escape_string($conn, $_POST['total']);
        <!-----------------issue code -------------------->
    foreach($_SESSION["products"] as $product){
        $productName = $product["productName"]; 
        $productPrice = $product["productPrice"];
        $product_qty = $product["product_qty"];
        $productImage1 = $product["productImage1"];                 
     }
        $productImage=implode(',', $productImage);
        $productName=implode(',', $productName);
        $product_qty=implode(',', $product_qty);
        $price=implode(',', $price);
      <!---------------------------------------------->            
        $query = "INSERT INTO orders 
              (address,productImage,productName,product_qty,total,price,) 
        VALUES( '$address','$productImage',
        '$productName','$product_qty','$total','$price')";                              
        $run= mysqli_query($conn, $query);
        unset ($_SESSION["products"]);
        echo "<script>window.location.assign('thankyou.php')</script>";
        } 
  ?>
LEE Hau Chon
  • 435
  • 3
  • 12
Amitabh
  • 21
  • 6

2 Answers2

0

Your query is a string, so you are literally putting $first_name,$last_name,$phone_number,... in your DB. And you probably gave your columns a type so zipcode being type int is getting a string.

0

For debugging, try

<?php   
        $msg='';
        if(isset($_POST['submit'])) {
        $address = mysqli_real_escape_string($conn, $_POST['address']);
        $total = mysqli_real_escape_string($conn, $_POST['total']);
        <!-----------------issue code -------------------->
    foreach($_SESSION["products"] as $product){
        $productName = $product["productName"]; 
        $productPrice = $product["productPrice"];
        $product_qty = $product["product_qty"];
        $productImage1 = $product["productImage1"];                 
     }
        $productImage=implode(',', $productImage);
        $productName=implode(',', $productName);
        $product_qty=implode(',', $product_qty);
        $price=implode(',', $price);
      //add this few lines for debug purpose
      var_dump($productImage);
      var_dump($productName);
      var_dump($product_qty);
      var_dump($price);
      die();
      <!---------------------------------------------->            
        $query = "INSERT INTO orders 
              (address,productImage,productName,product_qty,total,price,) 
        VALUES( '$address','$productImage',
        '$productName','$product_qty','$total','$price')";                              
        $run= mysqli_query($conn, $query);
        unset ($_SESSION["products"]);
        echo "<script>window.location.assign('thankyou.php')</script>";
        } 
  ?>

The above statement give you a clear view of what your variable types and also its inner content.

From what I see, the problem might be your $variable is not set to an array, so php assume it is a string, so you might get only the last record. Try this:

<?php   
        $msg='';
        if(isset($_POST['submit'])) {
        $address = mysqli_real_escape_string($conn, $_POST['address']);
        $total = mysqli_real_escape_string($conn, $_POST['total']);
        <!-----------------issue code -------------------->
    $productName = [];//or $productName = array();
    $productPrice = [];
    $product_qty = [];
    $productImage = [];
    foreach($_SESSION["products"] as $product){
        $productName[] = $product["productName"];// or 
        //array_push($productName,$product["productName"]);
        $productPrice[] = $product["productPrice"];
        $product_qty[] = $product["product_qty"];
        $productImage1[] = $product["productImage1"];                 
     }
        $productImage=implode(',', $productImage);
        $productName=implode(',', $productName);
        $product_qty=implode(',', $product_qty);
        $price=implode(',', $price);
      <!---------------------------------------------->            
        $query = "INSERT INTO orders 
              (address,productImage,productName,product_qty,total,price,) 
        VALUES( '$address','$productImage',
        '$productName','$product_qty','$total','$price')";                              
        $run= mysqli_query($conn, $query);
        unset ($_SESSION["products"]);
        echo "<script>window.location.assign('thankyou.php')</script>";
        } 
  ?>

Hope it helps.

LEE Hau Chon
  • 435
  • 3
  • 12