Php 如何更新表中的多行

Php 如何更新表中的多行,php,mysqli,shopping-cart,product-quantity,Php,Mysqli,Shopping Cart,Product Quantity,我正在使用PHP和MySQL制作一个在线商店购物车。现在我在做购物车。基本上到目前为止,我可以从db中检索数据并将其显示在购物车中,如下图所示: 现在我正在更新产品的数量。例如,用户必须能够将产品1的数量设置为2,产品2的数量设置为3,产品3的数量设置为4 因此必须有多个查询,因为每个产品都有一个唯一的产品id 所以我做的是: <select name='quantities[]'> <option value='1'>1</option> <opti

我正在使用PHP和MySQL制作一个在线商店购物车。现在我在做购物车。基本上到目前为止,我可以从db中检索数据并将其显示在购物车中,如下图所示:

现在我正在更新产品的数量。例如,用户必须能够将产品1的数量设置为2,产品2的数量设置为3,产品3的数量设置为4

因此必须有多个查询,因为每个产品都有一个唯一的产品id

所以我做的是:

<select name='quantities[]'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</select>

您需要使用所有数量发布
product\u id
(请将
value=”“
替换为您的实际变量,该变量可以在每个购物车项目/产品的隐藏字段中设置正确的
product\u id
,或者如果它已经存在,则您可以删除此隐藏字段并使用它):


希望它能解决您的问题…

您需要将pro_id添加到更新SQL中。因此,您需要迭代包含每行的数量和产品id的父对象,而不是对每一个数量执行一次迭代,我建议在编写更新查询时使用组合了购物车id和产品id的条件。您可以将产品id放入
name='Quantilities[5]
[]
中,您可以使用
$key
变量在foreach的每次迭代中获得每个产品id。它表示
不能使用[]进行读取
!这意味着我不能使用
echo”“
您的语句错误,请更改隐藏字段名。所以最后一个字符串将是
echo”“
$cart_id = $_GET['cart_id'];
if(isset($_POST['update'])){
    foreach($_POST['quantities'] as $quantities)
    {
        $insert_qty = "UPDATE cart SET qty = '$quantities' WHERE cart_id = '$cart_id'";
        $run_qty = mysqli_query($con,$insert_qty);
        if($run_qty)
        {
            echo '<META HTTP-EQUIV="Refresh" Content="0; URL=cart.php">';    
        }else{
            die(mysqli_error($con));
        }
    }
}
$get_add = "SELECT * FROM cart WHERE cart_id = '$cart_id'";
$run_add = mysqli_query($con,$get_add);
$cart_items = [];
$total_price_to_pay = 0;
while ($row_results = mysqli_fetch_array($run_add)){
    $item = array(
        'table_id' => $row_results['table_id'],
        'cart_id' => $row_results['cart_id'],
        'pro_id' => $row_results['product_id'],
        'pro_title' => $row_results['product_title'],
        'pro_price' => $row_results['product_price'],
        'pro_img' => $row_results['product_image'],
        'pro_supplier' => $row_results['product_supplier'],
        'qty' => $row_results['qty'],
        'cart_ip' => $row_results['cart_ip'],
        'pro_total' => $row_results['qty']*$row_results['product_price'],
    );
    $total_price_to_pay +=  $row_results['qty']*$row_results['product_price'];
    $cart_items[] = $item;
}
foreach ($cart_items as $cart) {
        echo $cart['pro_title'] etc ;
}
<input type="hidden" name="product_ids[]" value="<?php echo $item['pro_id']; ?>" />
<select name='quantities[]'>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>3</option>
    <option value='4'>4</option>
    <option value='5'>5</option>
</select>
$cart_id = $_GET['cart_id'];
if(isset($_POST['update'])){
    foreach($_POST['quantities'] as $index => $quantities)
    {
        $insert_qty = "UPDATE cart SET qty = '$quantities' WHERE cart_id = '$cart_id' AND product_id = '".$_POST['product_ids'][$index]."'";
        $run_qty = mysqli_query($con,$insert_qty);
        if($run_qty) {
            echo '<META HTTP-EQUIV="Refresh" Content="0; URL=cart.php">';    
        } else {
            die(mysqli_error($con));
        }
    }
}