php - 使用一个提交按钮更新多个 MYSQL 行
问题描述
我试图用一个提交按钮更新多个 MYSQL 行,
在我以前为每一行创建提交之前,但由于我现在有很多行,所以我需要一起更新它们
索引.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>
}
更新.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] );
}
推荐阅读
- python - 在 python 问题上导入和播放音乐:我做错了什么?
- c - 标记元素并将它们存储在 n 叉树中
- mysql - 如何在单个查询中获得零件总数、通过零件数和失败零件数
- java - 如何注入实现相同接口的两个不同类的两个实例?
- linux - 为什么我可以创建比“可用内存”/“线程堆栈大小”更多的线程?
- java - 部署war web应用程序时如何在Jboss 7.1中配置jndi引用名称workmanger和timer
- python - 如何检查 django 模板中是否存在模型实例
- python - 如何从超类实例创建子类实例
- qt - QGraphicsLayoutItem 和 QGraphicsTextItem 的子类
- javascript - 用 react.js 类编写的 BMI 计算器需要在提交按钮上单击两次才能改变一些 this.state 值