php - 需要有关执行 mysql 插入查询的一些逻辑的帮助吗?

标签 php mysql loops for-loop foreach

我正在使用 php 开发一个购物车,现在我陷入了如下困境。

有如下表:客户、产品、订单、order_detail

产品表:

id | name | quantity

订单明细表:

order_id | product_id | quantity

我完全完成了将产品添加到购物车的操作,客户可以将订单提交到数据库,管理员可以从后端删除或删除订单,如果订单仍未确认付款,客户可以删除订单列表或从前端删除订单。

示例:

“customer1”订购了 10 个产品,订单 ID 为#907987899,“product1”customer1 订单数量 = 2,“product2”customer1 订单数量 = 5 等等......

如果订单仍未确认,客户仍然可以从订单列表中删除产品,也可以删除整个订单。

我现在的问题是:如果客户或管理员取消或删除仍未确认付款的订单,那么我想将产品数量从 order_detail 表列表返回到产品表。当客户提交订单时,产品数量将从产品表中减去。

这是我将数量返回到产品的代码:

require '../../init.php';
require $ROOT . '/functions/basic.php';
if(isset($_POST['id']))
{
    $id = htmlspecialchars($_POST['id']);

    $delete = dbQuery("DELETE FROM orders WHERE order_id = '$id'");

    if($delete == true)
    {
        //unlink($ROOT . '/upload/products/' . $image);

        $select_product = dbAll("SELECT product_id, quantity FROM order_detail WHERE order_id = '$id'");

        foreach($select_product as $product)
        {
            $quantity = $product['quantity'];
            $product_id = $product['product_id'];

            $return_product_quantity = dbQuery("UPDATE products SET quantity = (quantity + $quantity) WHERE product_id = $product_id");
        }

        if($return_product_quantity == true)
        {
            $delete_order_detail = dbQuery("DELETE FROM order_detail WHERE order_id = '$id'");
            if($delete_order_detail == true)
            {
                echo "OK";
            }
            else
            {
                echo "Can't delete order detail information";
            }
        }


    }
    else
    {
        echo "Can't delete order row";
    }
}

但是查询似乎无法按照我的要求工作,所以请帮助我如何处理这种逻辑来执行我的要求。

提前致谢。

最佳答案

您尝试在 UPDATE 中使用变量 quantity,即使它没有值。试试这个:

$return_product_quantity = dbQuery("UPDATE products
                           SET quantity = ((SELECT quantity FROM products WHERE product_id = $product_id) + $quantity)
                           WHERE product_id = $product_id");

关于php - 需要有关执行 mysql 插入查询的一些逻辑的帮助吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29456124/

相关文章:

php - 下拉菜单不显示在导航栏 Laravel 6.0 中

mysql - 在 MySQL DB 中再次创建存储过程

python - 循环字符串难度python 3

php - 如何从 MySQL 创建对 Google Chart 友好的 JSON 数组?

php - FastCGI 服务器错误 500

php - 获取打开我网站的用户的IP地址

php - 对对象字面量数组使用原型(prototype)函数

docker 更新后,Mysql 未在 MacOS 上的 docker 容器中启动

algorithm - 如何计算两个循环的时间复杂度( Action 数)?

php - 计数while循环,在特定的循环时间内做其他事情并继续while循环