您好我目前在使用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,也只是购物车中的最后一个。任何帮助将不胜感激。
谢谢。
答案 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;
}