【问题标题】:Need help on some logic to perform mysql insert query?需要一些逻辑上的帮助来执行 mysql 插入查询?
【发布时间】:2015-06-09 22:57:20
【问题描述】:

我正在使用 php 开发一个购物车,现在我卡在下面的某个点。

有如下表:customers、products、orders、order_detail

产品表:

标识 |姓名 |数量

order_detail 表:

order_id |产品编号 |数量

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

例子:

“customer1”订购10件产品,订单编号为#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 products SET quantity = (quantity + $quantity) WHERE product_id = $product_id"); 你能解释一下为什么quantity 出现两次吗?
  • 这看起来你根本没有错误处理,或者是在数据库包装类中完成的(无论是哪个)?如果是这样,我希望您会收到一些错误消息,告诉您日志文件中有什么问题?
  • @TimBiegeleisen 数量出现两次,因为我想将 order_detail 中的数量添加到产品本身的数量中。
  • 你不能那样做。如果您没有先执行 SELECT 以获得结果集,数据库引擎怎么可能知道您尝试 UPDATE 的记录的 quantity 的值?

标签: php mysql loops for-loop foreach


【解决方案1】:

您正在尝试在您的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");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-14
    • 2012-07-29
    • 2014-05-03
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    相关资源
    最近更新 更多