如何循环INSERT INTO语句

时间:2016-09-16 17:23:52

标签: php mysql sql mysqli sql-insert

我遇到的问题是在return start <= i && i <= end; 语句的每个循环中触发INSERT INTO Mysql语句。

根据while正确循环播放正确的次数,但echo只能正常工作一次。

基本上问题是:“如何使用PHP或SQL语句循环遍历此SQL INSERT INTO

提前致谢

编辑:作为一个绝对的甜甜圈我没有意识到我已经为orderID设置了一个主键,它始终在工作。它只是不允许重复订单ID。

感谢您的帮助

INSERT statement

3 个答案:

答案 0 :(得分:0)

您可以通过从select语句中插入来优化该方法(将其称为“迁移”从一个表到另一个表):

"INSERT INTO orderdetail(selectionID, orderID)
  SELECT selectionID,orderID FROM cart WHERE userID =".$_SESSION['user'];

参考:Mysql Doc

答案 1 :(得分:0)

Ka_lin的答案很好,但您的订单没有存储用户/购物车的详细信息?我发现他们之间没有关系

通常情况下,购物车的流程是

  1. 用户将一些商品添加到购物车(购物车有ID)
  2. 用户结帐和购物车成为订单(使用购物车中的商品生成订单ID)

    insert into orders(cart_id,item_id,item_qty,item_price,create_datetime) select cart_id,item_id,item_qty,item_price,now() from carts;

  3. 然后更新cart_status以将此购物车标记为“已完成”,以确保我们在此用户返回时创建新购物车

    update carts set cart_status = 'ordered' where user_id = {$user_id};

  4. 继续处理订单!

  5. ===============

    在看到OP评论后编辑

    也许这种方式适合你

    1. 拥有order_header(存储通用信息 - 如order_type,地址,时间戳和用户)和order_detail(存储商品/产品相关信息)表
    2. 将购物车信息插入order_header以生成order_id
    3. 使用order_header
    4. select order_id from order_header where user = {$user_id} and status = 'new'获取order_id
    5. 使用order_detail order_detail insert into
    6. 将项目/产品详细信息插入(order_id,some columns here...) select ('{$order_id}',some columns here...) from carts where user = {$user_id};
    7. 然后将cart_status更新为'ordered' - 就是这样!

答案 2 :(得分:0)

已将orderID设置为主键。不能重复