Php 从表单发布更新数据库

Php 从表单发布更新数据库,php,mysqli,Php,Mysqli,我有以下表格: <form action="fixedsubmit.php" method="post"> <table class="table-sm" style="width:600px;" > <tr align="center" > <?php foreach ($rows as $x){ ?> &l

我有以下表格:

        <form action="fixedsubmit.php" method="post">
<table  class="table-sm" style="width:600px;" >
    <tr align="center" >
<?php
foreach ($rows as $x){
?>

      <td><b><?php echo $x['name'] ?></b></td>
<?php
}
?>
    </tr>
    <tr>
<?php
foreach ($rows as $x){
?>
      <td><input type text name="amount[]" size="7" style="text-align:center;font-weight:bold;" value="<?php echo $x['amount'] ?>"></td>
<?php
}
?>
    </tr>
    <tr>
<?php
foreach ($rows as $x){
if ($x['status'] == '1'){
$status = "Active";
}
elseif ($x['status'] == '0'){
$status = "Inactive";
}
else{
echo 'Problem';
}
?>
      <td><?php echo $status ?><br />
<?php
if ($status == 'Active'){
?>
Change&nbsp;&nbsp;<input type="hidden" name="status[]" value="0">
                  <input type="checkbox" name="status[]" value="1">  
    <input type="hidden" name="id[]" value="<?php echo $x['id'] ?>"></td>
<?php
}
elseif ($status == 'Inactive'){
?>
Change&nbsp;&nbsp;<input type="hidden" name="status[]" value="0">
                  <input type="checkbox" name="status[]" value="1">
  
    <input type="hidden" name="id[]" value="<?php echo $x['id'] ?>"></td>

<?php
}
}
?>
 
    </tr>
    <tr>
      <td colspan="10" align="center">
        <input type="submit" value="Update Prices" />
      </td>
    </tr>
</table>
</form>


为此,我通过创建一个带有id和状态的链接并分别提交来解决我的问题。

那么您有什么具体问题呢?警告:您完全可以使用参数化准备语句,而不是手动生成查询。它们由或提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行@ADyson…当我写这篇文章时,如果我只想更改1,它只会将第一个id(1)更改为一个,而不是我已更新的id(6)。或者,如果我更改了多个,则不会通过where id-$id语句更改它们。@Dharman。。。。我将调查准备好的声明的使用情况。我从来没有这样做过,但我不会老去学习。问题:为什么有一个隐藏字段和一个复选框都带有name=“status”?这似乎没有什么意义,我想知道这是否与你的问题有关
    // check if form has been submitted
if (isset($_POST['amount'])) {
//var_dump($_POST) . '<br />';
$chkbox = $_POST['amount'];

$i = 0;

while($i<sizeof($chkbox)){

            $sql_fixed = "UPDATE fixed_costs SET amount='".$_POST['amount'][$i]."', status='".$_POST['status'][$i]."' WHERE id='".$_POST['id'][$i]."'";
            $result_fixed = mysqli_query($con, $sql_fixed);


    $i++;
    }
    }