[英]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的回答很好,但是您的訂單沒有存儲用戶/購物車詳細信息? 我沒有看到他們之間的關系
通常,購物車的流量為
用戶結帳和購物車成為訂單(使用購物車中的商品生成訂單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;
然后更新cart_status以將該購物車標記為“完成”,以確保我們在該用戶返回時創建新的購物車
update carts set cart_status = 'ordered' where user_id = {$user_id};
繼續處理訂單!
===============
看到OP評論后進行編輯
也許這種方式對你有用
order_header
(存儲常規信息,例如order_type,地址,時間戳和用戶)和order_detail
(存儲項目/產品相關信息)表 order_header
以生成order_id order_header
獲取order_id,並從order_header
中select order_id from order_header where user = {$user_id} and status = 'new'
order_detail
與insert into
order_detail (order_id,some columns here...) select ('{$order_id}',some columns here...) from carts where user = {$user_id};
已將orderID設置為主鍵。 不能重復
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.