我正在尝试将已完成的订单保存到数据库中名为orders的表中。在数据库中,orders表仅显示最后一个产品,但我需要它来显示订单上的所有产品。
在下面的代码($ query2)中,它会抓取用户购物车中所有产品的ID。(购物车中有两种产品)
然后我使用while循环来显示它们,但是如果我尝试使用$ pro_id变量将它们插入到订单表($ query3)中,它只会抓取购物车中的最后一个产品并将其输入数据库。
如何让两种产品都进入订单表? 我需要以某种方式使用数组吗? 或者有不同的方法来做到这一点吗?
谢谢!
$ip = getIp();
$query = "SELECT * FROM cart WHERE ip='$ip'";
$result = mysqli_query($conn, $query);
if(mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_array($result)){
$id = $row['id'];
$pro_qty = $row['quantity'];
$query2 = "SELECT * FROM product WHERE id='$id'";
$result2 = mysqli_query($conn, $query2);
if(mysqli_num_rows($result2) > 0){
while ($row = mysqli_fetch_array($result2)){
$pro_id = $row['id'];
}
}
}
}
if(isset($_POST['placeOrder'])){
$query3 = "INSERT INTO orders (productId) VALUES ('$pro_id')";
$result3 = mysqli_query($conn, $query3);
}
}
答案 0 :(得分:1)
我发现网上有人向我展示了我尝试做的事情的另一种方式。而不是使用数组将两个产品保存到一列;我在数据库中创建了两个表(“orders”和“orderproducts”)。使用下面的代码,我这样做,如果点击“placeOrder”按钮,它会将客户的订单插入“订单”表(我创建的唯一编号并保存在变量“$ orderId”中)。 / p>
然后我获得了客户购物车中产品的ID并创建了一个while循环,该循环将运行购物车中的产品并使用“$ query3”将每个产品单独插入“orderproducts”中的自己的行中具有“orderId ='$ orderId'”的表($ orderId是我创建的唯一编号)和“productId ='$ productId'”。
if(isset($_POST['placeOrder'])){
$query = "INSERT INTO orders (orderId) VALUES ('$orderId')";
$result = mysqli_query($conn, $query);
$ip = getIp();
$query1 = "SELECT * FROM cart WHERE ip='$ip'";
$result1 = mysqli_query($conn, $query1);
if(mysqli_num_rows($result1) > 0){
while($row = mysqli_fetch_array($result1)){
$id = $row['id'];
$query2 = "SELECT * FROM product WHERE id='$id'";
$result2 = mysqli_query($conn, $query2);
if(mysqli_num_rows($result2) > 0){
while ($row = mysqli_fetch_array($result2)){
$productId = $row['id'];
$query3 = "INSERT INTO orderproducts (orderId, productId) VALUES ('$orderId', '$productId')";
$result3 = mysqli_query($conn, $query3);
}
}
}
}
}
然后抓住那个订单,我做了一个这样的查询:
$orderNumber = 5578;(This is a fake order number)
$query = "SELECT * FROM orders WHERE orderId='$orderNumber'";
$result = mysqli_query($conn, $query);
if($result){
$query1 = "SELECT * FROM orderproducts WHERE orderId='$orderNumber'";
$result1 = mysqli_query($conn, $query1);
}
答案 1 :(得分:-1)
你可以修改你的变量$ pro_id并使它成为这样的数组类型:
$ pro_id = array();
然后用它来存储你的数组。