[英]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.