需要帮助一些逻辑来执行mysql插入查询?

时间:2015-04-05 09:56:16

标签: php mysql loops for-loop foreach

我正在使用php开发一个购物车,现在我在某个时候陷入困境。

有以下表格:客户,产品,订单,order_detail

产品表:

  

id |名字|量

order_detail表:

  

order_id | product_id |量

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

示例:

" 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";
    }
}

但查询似乎不能满足我的要求,所以请帮助我如何处理这种逻辑以执行我的要求。

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

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