OOP For循环SQL更新查询数量

问题描述 投票:1回答:1

我正在尝试在我的FOR LOOP中创建一个查询,它将更新我的产品数量列。当客户签出时,他们会在我的订单表中创建一行,从那里为每个购买的商品按顺序创建一行。

我有三个表,包含以下列

  1. 产品(ID,数量)
  2. orderdetails(ID,OrderID,ProductID,Quantity)“OrderID和ProductID是外键”
  3. 订单(ID)

我收到的错误是

致命错误:未捕获错误:在布尔值上调用成员函数execute()

$newOrder = $conn->prepare("INSERT INTO orders (UserID, Amount) Values ('{$_SESSION['u_id']}','{$_SESSION['$s']}')");
$newOrder->execute();
$ordersid = $newOrder->insert_id;   

//Save order details for new order
$cart = json_decode(json_encode($_SESSION['cart']));
//For loop with query that creates a new row for every item
for($i = 0; $i<count($cart); $i++){
    $new_Orderdetail = $conn->prepare("INSERT INTO `orderdetails` (`OrderID`,`ProductID`,`Price`,`Quantity`) VALUES(".$ordersid.",".$cart[$i]->id.",".$cart[$i]->price.",".$cart[$i]->quantity.")");
    $new_Orderdetail->execute();
    $new_Orderdetailid = $new_Orderdetail->insert_id;
    echo "$new_Orderdetailid </br>";
    $update = $conn->prepare("Update p SET Quantity = Quantity - ".$cart[$i]->quantity." FROM products p where ID = ".$cart[$i]->id"");
    $update->execute();
}

有人可以帮我解决为什么我收到这个错误?

php mysql oop
1个回答
1
投票

据我所知,Quantity表中的字段productsVARCHAR()类型,所以你必须使用''来添加值。

编辑:由于您现在希望该字段为INT类型,因此不再需要''。我更新了代码:

// Corrected code
$update = $conn->prepare("UPDATE products SET Quantity=".$cart[$i]->quantity." WHERE ID=".$cart[$i]->id);

你在同一个声明的末尾有两个没有点的"",顺便说一句,如果""$cart[$i]->id,则不需要numeric

// Sample from your code
FROM products p where ID = ".$cart[$i]->id"");

// Corrected to
FROM products p where ID=".$cart[$i]->id);
© www.soinside.com 2019 - 2024. All rights reserved.