<?php
function acceptOrder(){
$conn = myConnect();
$qty=$_POST['order_qty'];
$ctr=$qty;
while($qty!=0){
$sql = "UPDATE ingredients SET ingredient_qty=ingredient_qty-2 WHERE ingredient_id='1'";
$qty++;
}
$result = mysqli_query($conn,$sql);
if($result){
$str="Successfully ordered Product.";
header("Location:../admin/cook.php?success-msg=".$str);
}else{
echo "Error updating your user. ".mysqli_error($conn);
}
}
为什么当我尝试将它放入PHP的新循环
时查询不起作用注意:未定义的变量:第121行的C:\ xampp \ htdocs \ lol \ controllers \ ProductController.php中的sql
警告:mysqli_query():第121行的C:\ xampp \ htdocs \ lol \ controllers \ ProductController.php中的空查询 更新用户时出错。
答案 0 :(得分:0)
您只是在循环后执行SQL ...
while($qty!=0){
$sql = "UPDATE ingredients SET ingredient_qty=ingredient_qty-2 WHERE ingredient_id='1'";
$qty++;
$result = mysqli_query($conn,$sql);
}
所以在循环中移动mysqli_query行。虽然...
除了不断更新数量&#39; -2&#39;之外,您的循环似乎没有做太多其他事情。你可能根本不需要循环!
function acceptOrder(){
$conn = myConnect();
$qty=$_POST['order_qty'];
$sql = "UPDATE ingredients SET ingredient_qty=ingredient_qty-$qty WHERE ingredient_id='1'";
$result = mysqli_query($conn,$sql);
if($result){
$str="Successfully ordered Product.";
header("Location:../admin/cook.php?success-msg=".$str);
}else{
echo "Error updating your user. ".mysqli_error($conn);
}
}
虽然您应该考虑使用预准备语句和绑定变量。
更新:如果您只是想使用循环来更新一组成分..
$ingredients = array( 1 => 2, 2=>1, 3=>1);
foreach ( $ingredients as $id => $qtyIng ) {
$updateQty = $qtyIng * $qty;
$sql = "UPDATE ingredients SET ingredient_qty=ingredient_qty-$updateQty WHERE ingredient_id='$id'";
$result = mysqli_query($conn,$sql);
}
$ingredients
数组存储每种成分的ID和每种成分的数量。所以id 1将用于鸡蛋,它使用2 ...
foreach
遍历成分列表,将其乘以您需要的数量,然后更新使用此数量和成分的$ id来更新正确的项目。