在我的项目中,我有一个表,我已使用 while 循环将数据提取到该表中。这是它的代码。
<form action="returnDoc.php" method="post">
<div class="row">
<div class="col-md-2">
</div>
<div class="col-md-8">
<div class="row">
<div class="col-md-12">
<h3>Return Document</h3>
</div>
</div><br><br>
<table class="table table-responsive-lg table-hover">
<tr>
<th>
No
</th>
<th>
Document ID
</th>
<th>
Put the tick for returns
</th>
</tr>
<?php while ($_r = mysqli_fetch_assoc($q_set)) { ?>
<tr>
<td>
<?php echo $_r['number']; ?>
</td>
<td>
<?php echo $_r['doc_id']; ?>
</td>
<td>
<input type="checkbox" name="return" value="<?php echo $_r['doc_id']; ?>" />
</td>
</tr>
<?php } ?>
</table>
</div>
<div class="col-md-2">
</div>
</div>
<div class="row">
<div class="col-md-4">
</div>
<div class="col-md-4">
</div>
<div class="col-md-4">
<input type="submit" value="SEND TO DSO" name="submit" class="btn btn-light"/>
</div>
</div>
</form>
如您所见,表格位于一个表单中,表格中的每一行都有一个复选框。
这是我的数据库表的屏幕截图。如您所见,有一个名为 availability 的字段,它们的值是“锁定的”。 当我点击提交时,我想将这些锁定的字段更新为勾选复选框的“返回”。 其他没有勾选的不要更新。
所以,这就是我所做的。
if (isset($_POST['submit'])) {
$update_query = "UPDATE req SET availability = 'returned' WHERE doc_id='$_POST[return]'";
mysqli_query($conn, $update_query);
}
我的问题是,此查询仅更新我勾选的最后一行,因为它在循环完成后获取值。它不会更新我选择的所有行。因此,如果您知道如何实现这一目标,请帮助我。
最佳答案
if (isset($_POST['submit'])) {
$update_query = "UPDATE req SET availability = 'returned' WHERE doc_id='{$_POST[return]}'";
mysqli_query($conn, $update_query);
}
试试这个
更多信息请访问 When to wrap curly braces around a variable
此外,复选框将发布一个数组而不是单个变量。
$_POST[return][0]
关于php - 查询仅更新最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49397243/