如何正确循环和更新数据库中的数量。

时间:2017-12-05 05:07:36

标签: php mysql

您好我目前在使用for循环更新数据库数量时遇到问题。现在我创建了一个购物车,当用户购买物品时,我想更新数据库中的数量。问题是我只能在购物中插入最后一个产品ID,所以只有一个项目更新,即使我有一个循环。代码很长,所以我只会显示我遇到麻烦的部分。

  for($i=0; $i<count($cart); $i++){
   $s += $cart[$i]->price * $cart[$i]->quantity;
   $tax= $s*.05;
   $shipping=$s* .02;
  $total=$s+$tax+$shipping;
   ?>
 <tr>
    <td><?php echo $cart[$i]->id; ?></td>
    <td><?php echo $cart[$i]->name; ?></td>
    <td><?php echo $cart[$i]->price; ?></td>
    <td><?php echo $cart[$i]->quantity; ?></td>
    <td><?php echo $cart[$i]->price * $cart[$i]->quantity; ?></td>
  </tr>

  <?php 
 $index++;
 $quantitycart=$cart[$i]->quantity;

   }
      if(array_key_exists('submit', $_POST))
      {  $results = mysqli_query($con, "select * from products"); 

     while($products= mysqli_fetch_object($results)){
     for($i=0; $i<count($cart); $i++){    
     $quantity= $products->quantity;
     $idcart=$cart[$i]->id;


     $sql = "UPDATE products SET quantity= quantity -'$quantitycart' WHERE 
 id='$idcart'";
    }}
 if ($con->query($sql) === TRUE) {
    echo "Record updated successfully";
 } else {
    echo "Error updating record: " . $con->error;
}

问题出在$ idcart上。由于某种原因,它没有正确循环并且只给出了正确的ID,也只是购物车中的最后一个。任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

问题出在循环中,你的sql查询将在每个循环中被写入,所以最后的sql查询将被执行。因此,您可以每次附加sql查询并使用multi_query方法

执行它
    if(array_key_exists('submit', $_POST))
      {  $results = mysqli_query($con, "select * from products"); 
     $sql="";//init
     while($products= mysqli_fetch_object($results)){
     for($i=0; $i<count($cart); $i++){    
     $quantity= $products->quantity;
     $idcart=$cart[$i]->id;
     $sql .= "UPDATE products SET quantity= quantity -'$quantitycart' WHERE 
     id='$idcart';";//here u need to append the query
    }//end for
    }//end while
    if ($con->multi_query($sql) === TRUE) {//use multi_query
    echo "Record updated successfully";
    } else {
    echo "Error updating record: " . $con->error;
    }