php - 在 foreach 循环内自动增加会话索引
问题描述
我有一个动态显示数据库行的 foreach 循环。我将它们显示在一个表单中,因此当我单击其中一个显示的表单内的按钮时,我会转到另一个页面,该页面根据我选择的表单更新我的数据库。
关于如何获取特定行并更新它的唯一想法是为每个创建的表单设置一个会话;如何设置具有自动递增索引的会话?
<?php foreach($stmt as $row):?>
<form action="Update.php" method="POST" >
<p>Has <?php echo $row["info"]; ?> seat(s) available </p>
//other similar html elements and echoing from database
<button type="submit" name="updateData"> Reserve</button>
// $_SESSION['phone']=$row['phone']
</form>
<?php endforeach;?>
如果我这样离开会话,它会被覆盖。
更新.php
$sss=5;
if(isset($_POST['updateData'])){
$stmt = $db->prepare("UPDATE ddd SET seats =:seats where phone = :phone");
$stmt->bindParam(':seats', $sss);
$stmt->bindParam(':phone', $_SESSION['phone']);
解决方案
如果 $row 匹配数据库表中的一行,它应该有一个唯一的 id。您可以在表单的隐藏输入中传递该唯一 ID:
<input type = "hidden" name = "id" value = "<?= htmlspecialchars($row['id']) ?>" />
然后在Update.php
, 参考$_POST['id']
而不是$_SESSION['id']
推荐阅读
- javascript - Plotly.js:使用重新样式更新每个节点的文本
- elasticsearch - 嵌套聚合 ElasticSearch 的问题:在最大值之后进行求和
- reactjs - 我们可以像在 MS Teams 中一样在机器人模拟器中渲染反应自适应卡吗
- java - 如何在 Swagger 中注释对象响应数组
- mongodb - 从数组聚合中删除元素
- java - ANTL4 语法编译 Nullpointer 异常
- ios - 在一台设备上绘图以在另一台设备上可见
- java - 如何使用 Spring Data ReactiveElasticsearch 进行源过滤?
- javascript - 为什么A按钮有效而B无效?
- google-bigquery - LEFT JOIN 丢弃结果中的左行?