PHP购物车,输入数据库

PHP购物车,输入数据库,php,mysql,database,Php,Mysql,Database,所以我现在写的是用户下单的代码。他们会在购物车中添加一本书,然后按“checkout”,然后列出他们需要支付的费用,然后按“placeorder”,然后需要将变量发送到我的数据库。在我的数据库中,我有两个不同的表,第一个是Orders,其中OrderID随放置的每个订单而递增。在订单中,我必须输入CustomerID、发货成本、税金和总价。然后,对于每个项目,我必须在OrderDetails中输入OrderID、ProductID、Quantity和LineTotal 但是,我不知道如何输入Or

所以我现在写的是用户下单的代码。他们会在购物车中添加一本书,然后按“checkout”,然后列出他们需要支付的费用,然后按“placeorder”,然后需要将变量发送到我的数据库。在我的数据库中,我有两个不同的表,第一个是Orders,其中OrderID随放置的每个订单而递增。在订单中,我必须输入CustomerID、发货成本、税金和总价。然后,对于每个项目,我必须在OrderDetails中输入OrderID、ProductID、Quantity和LineTotal

但是,我不知道如何输入OrderID,每个项目的顺序都对应于Orders表中生成的OrderID。例如,我订了两本书,a书和b书。它将添加一个新订单,并将CustomerID设置为登录用户的ID、运费、税金和总额。然后它会将OrderID设置为比最后一个位置高一个数字,比如19017。然后,我必须获得orderID并将订单id19017、ProductIDB1、quantity1和LineTotal输入到OrderDetails中,不管这本书花费多少。然后,我必须使用相同的OrderID对书b执行相同的操作。当我将订单id插入订单并在输入订单详细信息时使用它时,我不知道如何从中提取订单id。谢谢

if($_SESSION['cart']) 
{

echo"<pre>#             Title        Price    Quantity      Total</pre>";

    foreach($_SESSION['cart'] as $product_id => $quantity)
    {
        $query="Select ProductID , Title , Price From Products where ProductID='$product_id'";
        $result = mysql_query($query);
        list($ProductID, $Title, $Price) = mysql_fetch_row($result);
        $cost = $Price * $quantity;     
        $total = $total + $cost;    


                    echo "<br>";
                    echo "<br>";
                    echo "<br>";
                    echo "$ProductID &nbsp &nbsp &nbsp";
                    echo "$Title &nbsp &nbsp &nbsp";
                    echo "$ $Price &nbsp &nbsp &nbsp &nbsp &nbsp";
                    echo "$quantity &nbsp &nbsp";
                    echo "&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp $ $cost  &nbsp &nbsp &nbsp";
                    echo "<br>";
                    echo"___________________________________________________________________________________________________________________________";



    }
    If($total<25)
                    $ship=4.50;
            else if($total <50)
                    $ship=7;
            else if($total>=50)
                    $ship=10.25;
            else
                    $ship=0;


            $tax=$total*.06;
            $totalPrice=$total+$ship+$tax;

    $query2="Select CustomerID from Customers where Email='$username'";
    $result2 = mysql_query($query2);
    list($CustomerID) = mysql_fetch_row($result2);
    $query3="Insert into Orders(CustomerID, ShippingCost,Tax,Total) values($CustomerID,$ship,$tax,$totalPrice)";

    mysql_query($query3);
    $query4="Insert into OrderDetails(ProductID,Quantity,LineTotal) values('$ProductID',$quantity,$total)";
                mysql_query($query4);

    }

当您使用mysql函数时,您可以使用


但我强烈建议使用PDO或mysqli。有关这方面的更多信息,请参阅。

首先,任何基于mysql_*函数的新代码都被认为是不好的做法,可以使用PDO或mysqli_*函数。第二,答案是运行selectlast\u insert\u id:我使用了它。然而,如果我在我拥有的地方使用它,它将只插入最后输入的产品。我必须以某种方式在循环中获取orderID,这样它才能读入具有相同orderID的所有产品,我无法理解。您需要做的就是在循环中使用$orderId。循环运行后,query3就会运行,因此如果我在循环中使用它,它就不知道$orderId是什么。代码中只有一个循环,并且它里面没有任何insert查询。如果$total<25,您的循环将在之前结束。您是否需要进行另一个循环以进行插入?
$query3="Insert into Orders(CustomerID, ShippingCost,Tax,Total) values($CustomerID,$ship,$tax,$totalPrice)";
mysql_query($query3);

$orderId = mysql_insert_id();