【发布时间】:2021-05-06 06:24:59
【问题描述】:
我想使用 for 循环和 while 循环运行更新查询。因为我想更新产品数量 总数量减去订单数量后,根据产品id和总数量下单成功后的产品表中。但是查询没有运行成功。
我的代码:
// Update Query
$update_quantity = "";
for ($i = 0; $i < (count($_SESSION['shopping_cart'])); $i++) {
$select_quan = "SELECT * FROM product WHERE pid = {$pid[$i]}";
$result_quan = mysqli_query($con, $select_quan);
// $update_quantity .= " UPDATE product SET ";
while ($row_quan = mysqli_fetch_assoc($result_quan)) {
$quantity_after_order[$i] = $row_quan['pquantity'] - ($pquantity[$i]);
$update_quantity .= "UPDATE product SET pquantity = '$quantity_after_order[$i]' WHERE pid=$pid[$i]; ";
}
}
当我运行查询时:
// echo $update_quantity;
if ($con->query($update_quantity) == TRUE) {
echo "Data Successfully Updated";
}
else{
echo "Error: $update_quantity <br> $con->error";
}
它给出的输出:
Error: UPDATE product SET pquantity = '246' WHERE pid=7; UPDATE product SET pquantity = '11' WHERE pid=32;
您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“UPDATE product SET pquantity = '11' WHERE pid=32' 附近使用正确的语法
如果运行此查询的另一种方式在订单成功后根据 product_id 更新数据库中的数量,请告诉我。
【问题讨论】:
-
See How can I prevent SQL injection in PHP?。还要使用multi table UPDATE 语法,这样你就不需要在循环中执行 SQL。
-
pquantity 是字符串吗?
-
当你告诉它“一次性”作用于一组行时,SQL 会发光;当你一次只做一行时,SQL 就会陷入困境。
-
请参阅mysqli::multi_query 或逐一执行您的查询。
标签: php mysql mysqli sql-update product-quantity