php - 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
$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>";
}
?>
希望能帮助到你。
推荐阅读
- javascript - 如何将字符串转换为插值字符串?
- c# - 从今天开始查找接下来的 5 个工作日
- jquery - querySelector 是否比 jQuery 更老更快?
- c# - 在泛型中转换为基类不起作用
- request - Wpf Prism Resize 交互窗口
- android - 在 Google Play 商店中为特定的 Google 帐户分发私有应用程序
- python - Python - 创建一列等于另一列的值,但如果第一列中出现两个连续值,则使新列等于 0
- java - 我无法从用户那里获得输入作为 java 中的浮点数
- java - 在控制台中提供数据时跳过第一个字符串输入
- c++ - Qt 的正则表达式与预期不匹配