Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP将多个HTML字段更新到MySQL数据库_Php_Html_Mysql_Forms - Fatal编程技术网

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

使用PHP将多个HTML字段更新到MySQL数据库,php,html,mysql,forms,Php,Html,Mysql,Forms,这似乎是一项非常基本的任务;我不确定我是否有脑抽筋,或者我是否遇到了更罕见的事情。但事实似乎并非如此 我有一个名为products的表,其中有以下列:ID、Model、Cost、Quantity 我的HTML表单按型号打印所有价格和数量折扣;我这样循环: <form method="post"> <table> <tr> <th>Quantity</th> <th

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

我有一个名为
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>

我遇到的问题是,我想检查每个字段并更新每个字段。在快速搜索其他堆栈问题时,似乎需要使用
foreach
遍历每个字段。这是正确的吗?此外,查询是否也在循环中?

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

foreach($_POST as $key => $value) {
    if(is_numeric($key))
    {
        $query = "UPDATE retail_pricing SET pricing = $value  WHERE id = $key ";
        mysqli_query($connection, $query);
    }  
}
<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>

在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>

为什么要迭代所有字段?如果所有字段都在同一个表中,您可以对它们进行一次更新。我认为我最头疼的是识别标记。在
name=”“
字段中输入什么。它应该是唯一的,但是ID看起来不合适。因此在
POST
上,我必须手动拼写每个字段,因为我在
HTML
中循环创建这些字段,似乎我需要在
php
末尾执行相同的操作。为什么要迭代所有字段?如果所有字段都在同一个表中,您可以对它们进行一次更新。我认为我最头疼的是识别标记。在
name=”“
字段中输入什么。它应该是唯一的,但是ID看起来不合适。因此在
POST
上,我必须手动拼写每个字段,因为我在
HTML
中循环创建这些字段,似乎我需要在
php
端执行相同的操作。我更喜欢这种方法,因为如果将来添加更多表单字段,它将防止查询出现任何问题。我更喜欢这种方法,因为如果将来添加更多表单字段,它将防止查询出现任何问题。它很可能会起作用,但这也将接受任何数字字段名,即使它不是数据库中的有效ID,这可能会导致失败。@Sébastien好的,谢谢,很高兴知道。这是一个非常简单的项目,所以我会坚持下去,因为它并没有坏,但今后我会倾向于使用你的;所以我也投票了。只要你知道:)它很可能会工作,但这也会接受任何数字字段名,即使它不是数据库中的有效ID,这可能会导致失败。@Sébastien好的,谢谢,很高兴知道。这是一个非常简单的项目,所以我会坚持下去,因为它并没有坏,但今后我会倾向于使用你的;所以我也投了赞成票。只要你知道:)
foreach( $_POST['ids'] as $id )
{
    $price = $_POST[$id];
     $query = "
        UPDATE retail_pricing
        SET pricing = {$price}
                    WHERE id = {$id} ";
    mysqli_query($connection, $query);
}