gpt4 book ai didi

php - 如何使用 foreach 从购物车函数创建(或插入到 MySQL 中)单个订单 ID

转载 作者:行者123 更新时间:2023-11-28 23:08:41 25 4
gpt4 key购买 nike

我正在尝试开发一家商店,但由于我对 PHP 的了解不足而陷入困境,我在线阅读并尝试以最少的理解来实现。

当我将购物车商品插入 MySQL 以便生成订单号时,每次插入都会通过自动递增的方式创建多个 ID。我想要的是在该查询中传递的所有产品的一个 ID,以便我可以将它带到我获取用户详细信息的结帐页面。我有一个 foreach 循环,它可以帮助我完美地展示产品,但是当我尝试使用插入时,它会创建单独的 ID。

我需要的是每个查询的单个订单 ID,其中可以将临时购物车商品传递到结帐页面和 MySQL

以下是我的代码:

<?php
session_start();
require_once("inc/connect.php");


?>


<?php
if(isset($_SESSION["cart_item"])){
$item_total = 0;
?>

<?php


$data = '';
foreach ($_SESSION["cart_item"] as $item){


$product_id = $item["id"];
$quantity_per_product = $item["quantity"];
$data .= "(NULL, '$product_id', '$quantity_per_product', NULL),";

}
$data = rtrim($data, ',');
$ad="INSERT INTO `orders`(`order_id` ,`product_id` ,`quantity_per_product` ,`modified`)
VALUES $data;";


$q2 = mysqli_query($connection, $ad);

if (!$q2)
{
echo ('Q2 failed: ' . mysql_error());
}
else {echo 'success Q2';

echo "query: "; print_r($ad);}




$order_id=mysqli_insert_id($connection);
echo "<script language='javascript'>
window.location = 'checkout.php?checkout=$order_id';
</script>";

?>

最佳答案

MySQL 在这里的行为是正确的——您希望这些项目中的每一个都有一个单独生成的主键。但是,我认为问题出在您的数据库设计上。

您要将购物车项目插入到 order 表中,但购物车项目不是订单。它们是订单商品。

因此,您需要另一个表。我会将您当前的表 order 重命名为 order_item,并像现在一样继续使用该结构。但是,在此之前,请在 order 表中创建一行,这将为您的整个订单自动生成一个主键。

最后,当您插入 order_item 时,您可以插入主键 order.id 作为外键,将项目链接到它们所属的订单。这模拟了一个订单有零到多个订单项,一个订单项只有一个订单的真实情况。


另外:您的 INSERT 查询是使用串联构建的,这可能会使您暴露于 SQL 注入(inject)漏洞。请改用参数绑定(bind)。幸运的是,您使用的是 MySQLi 数据库连接器,它支持 input parameter binding开箱即用。

关于php - 如何使用 foreach 从购物车函数创建(或插入到 MySQL 中)单个订单 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46513161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com