Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我的会话数组不能正确读取?_Php_Mysql - Fatal编程技术网

Php 为什么我的会话数组不能正确读取?

Php 为什么我的会话数组不能正确读取?,php,mysql,Php,Mysql,所以我现在正在创建一个webshop项目,我遇到了一个问题。 我要求用户在购物车中添加项目(这是一个会话数组)。 在用户决定购买什么之后,用户可以为这些项目下订单。 首先,用户必须提供一些信息,说明用户希望发送包的地址。 该数据被发送到“orders”表,这很好,我在这里给订单一个ID。之后,我立即尝试用相同的orderID填写orderdetails: 以下代码负责从会话数组中读取数据,然后将相同的信息写入表“orderdetails” $query2 = "INSERT INTO

所以我现在正在创建一个webshop项目,我遇到了一个问题。 我要求用户在购物车中添加项目(这是一个会话数组)。 在用户决定购买什么之后,用户可以为这些项目下订单。 首先,用户必须提供一些信息,说明用户希望发送包的地址。 该数据被发送到“orders”表,这很好,我在这里给订单一个ID。之后,我立即尝试用相同的orderID填写orderdetails:

以下代码负责从会话数组中读取数据,然后将相同的信息写入表“orderdetails”

$query2 = "INSERT INTO orderdetails (OrderID, productID, UnitPrice, Quantity) VALUES ($orderID, $productID, $UnitPrice, $Quantity)";

    if (!empty($_SESSION["shopping_cart"])) {       
        $orderID = mysqli_insert_id($conn);
        foreach ($_SESSION["shopping_cart"] as $keys => $values) {
            $productID = $values["item_productID"];
            $UnitPrice = $values["item_price"];
            $Quantity = $values["item_quantity"];
            mysqli_query($conn, $query2);
        }
        mysqli_close($conn);
    }

您的查询字符串被设置为默认空值
$orderID
$productID
,等等。您每次都必须重新生成该查询。将整个查询行放入for循环中

...
$Quantity = $values["item_quantity"];
$query2 = "INSERT INTO orderdetails (OrderID, productID, UnitPrice, Quantity) VALUES ($orderID, $productID, $UnitPrice, $Quantity)";
mysqli_query($conn, $query2);
...

话虽如此,SQL注入是一件事

谢谢大家!!这对我帮助很大!我在用户向shoppingcart添加商品时包含了准备好的语句,这就足够了。现在,我的程序不会写入数组tho的最后一项。。嗯,使用SQL时再小心也不为过。我使用预先准备好的语句,即使我根本没有要绑定的参数。这只是一个好习惯。