我试图用一个提交按钮更新多个MYSQL行,
在我以前为每一行创建提交之前,但是由于我现在有很多行,所以我需要一起更新所有行
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>
}
update.php
$id= $_POST['id'];
$name= $_POST['name'];
$sql = "UPDATE `$tabelname` SET
name='$name'
WHERE id='$id'";
仅更新第一行
假设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; ?>
这里的键是name =“ name []”。方括号使其成为一个数组。我正在使用ID作为索引。 (请注意,<?=
只是编写<?php echo
的一种更为简洁的方法)
然后,在您的php脚本中,向您展示的最简单方法是遍历数组并每次进行更新:
$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] );
}