在执行 mysql 插入查询的某些逻辑上需要帮助吗?
Need help on some logic to perform mysql insert query?
我正在使用 php 开发购物车,现在我卡在了以下某个点。
有table类:客户、产品、订单,order_detail
产品table:
id | name | quantity
order_detail table:
order_id | product_id | quantity
我完全完成了将产品添加到购物车,客户可以将订单提交到数据库,管理员可以从后端删除或删除订单,如果订单仍未确认付款,客户可以删除订单列表或从前端删除订单。
示例:
"customer1"订购10件产品,订单ID为#907987899,"product1"customer1订购数量=2,"product2"customer1订购数量=5,依此类推.....
如果订单仍未确认,客户仍然可以从订单列表中删除产品,也可以删除整个订单。
我现在的问题是:如果客户或管理员取消或删除仍未确认付款的订单,那么我想将 return 产品数量从 order_detail table 列表返回到产品table。到客户提交订单时,产品数量将从产品中减去 table.
这是我的代码,return 返回产品的数量:
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 开发购物车,现在我卡在了以下某个点。
有table类:客户、产品、订单,order_detail
产品table:
id | name | quantity
order_detail table:
order_id | product_id | quantity
我完全完成了将产品添加到购物车,客户可以将订单提交到数据库,管理员可以从后端删除或删除订单,如果订单仍未确认付款,客户可以删除订单列表或从前端删除订单。
示例:
"customer1"订购10件产品,订单ID为#907987899,"product1"customer1订购数量=2,"product2"customer1订购数量=5,依此类推.....
如果订单仍未确认,客户仍然可以从订单列表中删除产品,也可以删除整个订单。
我现在的问题是:如果客户或管理员取消或删除仍未确认付款的订单,那么我想将 return 产品数量从 order_detail table 列表返回到产品table。到客户提交订单时,产品数量将从产品中减去 table.
这是我的代码,return 返回产品的数量:
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");