簡體   English   中英

如何遍歷INSERT INTO語句

[英]How do I loop through an INSERT INTO statement

我遇到的問題是在while語句的每個循環期間觸發INSERT INTO Mysql語句。

它根據echo傳正確次數的echo正確循環,但是INSERT INTO僅工作1次。

基本上,問題是:“如何使用PHP或SQL語句遍歷此SQL INSERT statement語句”

提前致謝

編輯:作為一個絕對的甜甜圈,我沒有意識到我已經為orderID設置了主鍵,一直在工作。 只是不允許重復orderID。

謝謝您的幫助

<?php
if(isset($_GET['checkout']))
{
$sql="SELECT * FROM cart WHERE userID =".$_SESSION['user'];
$query= mysqli_query($conn,$sql);
while ($row = mysqli_fetch_array($query)) {
            $querys= "INSERT INTO `orderdetail`(`orderID`, `selectionID`) VALUES (LAST_INSERT_ID(),{$row['cardchoiceID']})";
              $performit = $conn->query($querys);
                echo("testing");
            }
}
?>

您可以通過從select語句插入(將其稱為從一個表到另一個表的“遷移”)來優化方法:

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

參考: Mysql Doc

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. 繼續處理訂單!

===============

看到OP評論后進行編輯

也許這種方式對你有用

  1. 擁有一個order_header (存儲常規信息,例如order_type,地址,時間戳和用戶)和order_detail (存儲項目/產品相關信息)表
  2. 將購物車信息插入order_header以生成order_id
  3. order_header獲取order_id,並從order_headerselect order_id from order_header where user = {$user_id} and status = 'new'
  4. 插入項目/產品細節成order_detailinsert into order_detail (order_id,some columns here...) select ('{$order_id}',some columns here...) from carts where user = {$user_id};
  5. 然后將cart_status更新為“有序”-就是這樣!

已將orderID設置為主鍵。 不能重復

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM