使用 PHP 将多个 HTML 字段更新到 MySQL 数据库中


Updating Multiple HTML Fields into MySQL Database with PHP

这似乎是一个非常基本的任务;我不确定我是否脑抽筋,或者我是否遇到了更罕见的事情。 但似乎并非如此。

我有一个名为 products 的表,其中包含这些列:ID, Model, Cost, Quantity

我的HTML表单按型号打印出所有价格和数量折扣;我像这样循环:

 <form method="post">
 <table>
       <tr>
            <th>Quantity</th>
            <th>Pricing</th>
       </tr>
      <?php while ($row = mysqli_fetch_array($result)) { ?>
       <tr>
           <td><?php echo $row['model']; ?></td>
           <td><input type="text" name="<?php echo $row['id']; ?>" value="<?php echo $row['cost']; ?>" /></td>
      </tr>
     <?php } ?>
 </table>

  <input type="submit" name="retail_price" value="Update Pricing"  />
 </form>

因此,它会在文本字段中打印出所有定价,并有一个按钮,以便可以对定价进行"批量"更新。

我的问题是关于我被困PHP

if (isset($_POST['retail_price'])) {  // THIS CODE IS NOT COMPLETE!
    $query = "
        UPDATE retail_pricing
        SET pricing = {$new price}
                    WHERE id = {$id} ";
    mysqli_query($connection, $query);
}

我遇到的问题,我想遍历每个字段并更新每个字段。 快速搜索其他 Stack 问题,似乎我需要使用foreach来遍历每个字段。 这是对的吗? 另外,查询也会在循环中吗?

foreach($_POST as $key => $value) {
    if(is_numeric($key))
    {
        $query = "UPDATE retail_pricing SET pricing = $value  WHERE id = $key ";
        mysqli_query($connection, $query);
    }  
}

在 HTML 中添加一个隐藏的输入,该输入将收集所有 ID:

<tr>
    <td><?php echo $row['model']; ?></td>
    <td>
    <input type="text" name="<?php echo $row['id']; ?>" value="<?php echo $row['cost']; ?>" />
    <input type="hidden" name="ids[]" value="<?php echo $row['id']; ?>" />
    </td>
</tr>

然后,当您提交表单时,您可以遍历所有这些 ID 并更新您的数据库:

foreach( $_POST['ids'] as $id )
{
    $price = $_POST[$id];
     $query = "
        UPDATE retail_pricing
        SET pricing = {$price}
                    WHERE id = {$id} ";
    mysqli_query($connection, $query);
}