首页 > 解决方案 > php 内爆代码不起作用 代码丢失

问题描述

我正在使用 PHP 7.2 MySQLi 添加到购物车。插入产品,如访客用户详细信息。和产品详细信息所有数据都被插入,但与产品相关的数据没有。我想插入数据产品详细信息。插入数据如

(productImage, productName, product_qty, price) 通过在数据库中获取foreach循环内爆函数插入

请检查一下。并帮助我...

  <?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>";
        } 
  ?>

标签: php

解决方案


对于调试,请尝试

<?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>";
        } 
  ?>

上面的语句让您清楚地了解变量类型及其内部内容。

从我所见,问题可能是你$variable没有设置为数组,所以 php 假设它是一个字符串,所以你可能只得到最后一条记录。尝试这个:

<?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>";
        } 
  ?>

希望能帮助到你。


推荐阅读