内部while循环时查询不起作用

时间:2018-03-10 13:46:17

标签: php loops while-loop

<?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中的空查询   更新用户时出错。

1 个答案:

答案 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来更新正确的项目。