如何更新所购买产品的库存
Posted
技术标签:
【中文标题】如何更新所购买产品的库存【英文标题】:How update stock of product being purchased 【发布时间】:2020-11-15 12:33:03 【问题描述】:我目前正在处理商店页面,并且正在使用 PayPal 智能按钮进行付款。一旦付款被批准,我的库存数量就会减少。但是,当我付款时,它并没有减少所购买商品的库存,而是减少了数据库中每件商品的库存。我可以做些什么来减少所购买商品的库存?
这是我的代码。
view_product.php:
<?php
include 'pdo_connect.php';
$product_id = $_GET['product'];
$stmt = $db->prepare("SELECT * FROM products Where id = :id");
$stmt->bindParam(':id', $product_id );
$stmt->execute();
while($row = $stmt->fetch())
$stock = $row['stock'];
$id = $row['ID'];
if ($stock > 0)
echo
"<script>
paypal.Buttons(
style:
shape: 'rect',
color: 'blue',
layout: 'vertical',
label: 'paypal',
locale: 'en_CY'
,
createOrder: async function(data, actions)
let stock = (await fetch('get_current_stock.php')).json();
let currentStock = stock['current'];
//may use amoutTryingToOrder instead of 1
if (currentStock < 1)
alert('Out of stock, sorry :(');
return false;
return actions.order.create(
purchase_units: [
amount:
value: ". $row['paypal_price'] .",
currency: 'EUR'
]
);
,
onApprove: function(data, actions)
return actions.order.capture().then(function(details)
//alert('Transaction completed by ' + details.payer.name.given_name + '!');
alert('Your payment has been processed!');
localStorage.clear();
window.location.href = 'http://localhost/website/thankyou.php';
const formData = new FormData();
formData.append('amountOrdred', 1);
fetch('update_stock.php',
method: 'POST',
body: formData
);
)
).render('#paypal-button-container');
</script>";
else
echo "Out of stock";
?>
update_stock.php:
<?php
include 'pdo_connect.php';
$id = $_GET['ID'];
$sql = "UPDATE products SET stock = stock - 1 WHERE stock > 0 and ID = :id";
$stmt = $db->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
$_POST['amountOrdered'];
?>
提前谢谢你!
【问题讨论】:
formData 确实似乎将 ID 作为 id 的值,只有 'amountOrdred', 1 所以你的更新将不起作用 @nbk 这应该解决问题吗? formData.append('amountOrdred', 1, 'ID', $row[ID]); 你应该早点调试过代码,但是它会解决你添加 ID 的问题我仍然不明白为什么你有 amountOrdred 并且不使用它 【参考方案1】:这不是有效的 SQL:
UPDATE products WHERE id = :id SET stock = stock - 1 WHERE stock > 0
此查询中有两个WHERE
子句,SQL 不允许这样做。你可能的意思是:
UPDATE products SET stock = stock - 1 WHERE stock > 0 and id = :id
【讨论】:
是的,这是正确的,但没有解决我的问题。库存量依然没有减少以上是关于如何更新所购买产品的库存的主要内容,如果未能解决你的问题,请参考以下文章
Odoo与浪潮合资研发PS Cloud之如何管理你不拥有的股票
是否可以在数据库中跟踪库存并更新使用 Paypal 进行的购买的商品数量?