如何在一个数据库列中输入多个值

时间:2016-03-30 16:41:03

标签: php mysqli

我正在尝试将已完成的订单保存到数据库中名为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);
        }

    } 

2 个答案:

答案 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();
然后用它来存储你的数组。

相关问题