【问题标题】:Trying to link products from a php session to an order(id)尝试将产品从 php 会话链接到订单(id)
【发布时间】:2018-03-05 18:11:01
【问题描述】:

你好 stackoverflowers,

我对 PHP、SQL 还很陌生,我目前正在尝试创建一个自制的订购系统。该系统由一个“购物车”组成,我想将其内容链接到订单。我想到了以下2张表:

订单

  • order_id
  • order_bag
  • order_cash

ORDER_PRODUCTS

  • order_product_id
  • order_id
  • order_quantity

由于 1 个订单可以包含多个产品,因此我尝试将它们与“order_id”相关联。现在的问题是我不知道如何在我的代码中做到这一点。我尝试了很多查询,但似乎无法将两者联系在一起。购物车中的所有产品都存储在一个 php 会话中。

插入订单号查询: 插入订单 (order_bag, order_cash) VALUES ('$bag','$cash')

由于order_id自动递增,我没有在语句中填写,但是每个订单都会创建一个新的order_id。如何确保在我的第二条语句中使用了此订单,我将购物车中的所有产品存储在 ORDER_PRODUCTS 表中?我似乎不能马上使用 order_id,因为它还没有被填入 ORDERS 表中。

插入产品查询: INSERT INTO Orders_Products (order_id, order_quantity) VALUES ('$order_id','$product_qty')");

非常感谢任何提示或其他帮助。

祝你有美好的一天!

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    我只是想给你一个基本的想法。据我了解,您正在尝试将订单详细信息与产品 ID 一起保存。首先,当您一次插入多个表时,请始终使用transactions,这样如果在任何查询后出现任何错误,它都会回滚数据。

    现在,显然你有购物车的详细信息,所以保留该数组并开始交易并插入订单详细信息(计算总账单等)。使用 LAST_INSERT_ID 或 $connection->insert_id 获取订单 ID。现在运行第二组查询。生成一个查询以在您的 order_products 表中插入多行。以正常方式插入并提交事务。

    第一个表将作为包含订单元数据的主表。第二个表将使用order_id 作为外键并在order_idproduct_id 之间创建关系。 order_products 表不需要 AUTO INCREMENTED 键。只需制作order_idproduct_id 的复合键即可。

    【讨论】:

      【解决方案2】:

      你可以这样做。

      // Create connection
      $conn = new mysqli($servername, $username, $password, $dbname);
      // Check connection
      if ($conn->connect_error) {
          die("Connection failed: " . $conn->connect_error);
      }
      
      $sql = "INSERT INTO Orders (order_bag, order_cash) VALUES ('$bag','$cash')";
      
      if ($conn->query($sql) === TRUE) {
          $order_id = $conn->insert_id;
      }
      

      【讨论】:

        猜你喜欢
        • 2018-03-23
        • 1970-01-01
        • 1970-01-01
        • 2011-12-06
        • 1970-01-01
        • 2021-10-29
        • 1970-01-01
        • 2013-01-06
        • 1970-01-01
        相关资源
        最近更新 更多