Php 使用一个提交按钮更新多个MYSQL行

Php 使用一个提交按钮更新多个MYSQL行,php,mysql,loops,form-submit,Php,Mysql,Loops,Form Submit,我试图用一个提交按钮更新多个MYSQL行 以前我习惯于为每一行创建submit,但现在我有很多行,所以我需要一起更新它们 index.php <?php if (mysqli_num_rows($row){ while($row1= mysqli_fetch_assoc($row){ id<input type="text" value="<?php echo $row["id"];?>" name='id' id="id" > id<input

我试图用一个提交按钮更新多个MYSQL行

以前我习惯于为每一行创建submit,但现在我有很多行,所以我需要一起更新它们

index.php

<?php
if (mysqli_num_rows($row){
while($row1= mysqli_fetch_assoc($row){


id<input  type="text" value="<?php echo $row["id"];?>"  name='id' id="id"  >
id<input  type="text" value="<?php echo $row["name"];?>"  name='name' id="name"  >
}
<button type="submit" formaction="update.php">
         submit
      </button>

}
它只更新第一行,假设id是主键

在html中,需要在名称中使用数组。这允许表单将其作为数组发送,而不只是获取最后一个值:

<?php while($row1= mysqli_fetch_assoc($row): ?>
    <div>
        <label>Name: </label>
        <input type="text" value="<?=$row["name"]?>"  name="name[<?= $row["id"] ?>]" id="name-"<?= $row["id"] ?> " />
    </div>
<?php endwhile; ?>

我发现很难相信您的代码运行时使用if mysqli_num_rows$row,这将导致解析错误。这是您的实际代码还是您不小心错过了缺少的括号?与while$row1=mysqli\u fetch\u assoc$row相同。另外,while$row1<您正在使用$row1,但未使用它。你用了$row。加上$tabelname是在哪里定义的,是如何定义的?那么您就有了ID,这不是实际的代码。在我这方面一切正常,>>当我单击“更新”时,我想使用相同的一个按钮一起更新所有行。您在每一行的输入都有相同的名称。只有一个$u POST['id'],它将来自最后一行。
<?php while($row1= mysqli_fetch_assoc($row): ?>
    <div>
        <label>Name: </label>
        <input type="text" value="<?=$row["name"]?>"  name="name[<?= $row["id"] ?>]" id="name-"<?= $row["id"] ?> " />
    </div>
<?php endwhile; ?>
$row = $_POST[‘name’];
foreach($row as $id => $name) {
    // This is a big No-No!
    // $sql = "UPDATE `$tabelname` SET name='$name' WHERE id='$id'";

    // use prepared statements. Always. 
    $sql = "UPDATE `$tabelname` SET name=? WHERE id=?"; // assuming “tabelname” is not user-provided

    // database connection up to you
    $stmt = $db->prepare($sql);
    $stmt->execute( [$name, $id] );
}