php - 在 foreach 循环中更新数组数据的问题
问题描述
我正在处理要更新表格数据的发票。
我的脚本只更新表格的最后一行。这可以与这个 foreach 循环一起工作吗?
以下是我尝试使用的脚本:
HTML 输入字段
<tr>
<input type="hidden" name="data['+i+'][Id]" value="<?php echo $Id; ?>" >
<input type="hidden" name="data['+i+'][ItemId]" value="<?php echo $item_Id; ?>" >
<td><input type="text" value="<?php echo $item; ?>"></td>
<td><input type="text" name="data['+i+'][QTY]" value="<?php echo $Quantity; ?>"</td>
<td><input type="number" value="<?php echo $price; ?>"></td>
<td><input type="number" name="data['+i+'][total]" value="<?php echo $total; ?>"></td>
</tr>
PHP
if (isset($_POST['submit'])) {
foreach($_POST['data'] as $key => $data) {
$Id = intval($data['Id']);
$itemId = intval($data['ItemId']);
$QTY = intval($data['QTY']);
$Total = intval($data['total']);
if($itemId > 0) {
$query = $db - > prepare("UPDATE table SET QTY = :QTY where id = :ID ");
$query - > execute(array(':ID' => $ID, ':QTY' => $QTY));
}
}
}
解决方案
这似乎不是有效的语法:
data['+i+']
PHP 会将其视为具有固定值的字符串,这意味着您的$_POST[data]
数组将只有一个键,每次出现新的键都会覆盖前一个键。最后它看起来像这样:
$_POST[data] == array( '+i+' => array(
'Id' => ...,
'ItemId' => ...,
'QTY' => ...,
'total' => ...
));
您可能想在代码中使用一些 PHP 以正确编写i
索引:
<tr>
<input type="hidden" name="data[<?php echo $i; ?>][Id]" value="<?php echo $Id; ?>" >
<input type="hidden" name="data[<?php echo $i; ?>][ItemId]" value="<?php echo $item_Id; ?>" >
<td><input type="text" value="<?php echo $item; ?>"></td>
<td><input type="text" name="data[<?php echo $i; ?>][QTY]" value="<?php echo $Quantity; ?>"</td>
<td><input type="number" value="<?php echo $price; ?>"></td>
<td><input type="number" name="data[<?php echo $i; ?>][total]" value="<?php echo $total; ?>"></td>
</tr>
并为每一行增加它。
推荐阅读
- node.js - Heroku 上将 Angular 调用代理到后端 API 的正确方法是什么?
- java - 访问 H2 DB 时未找到表“myTable”错误
- c# - 为什么“decimal.TryParse()”在下面的代码中总是为输入字符串“-1”返回 0?
- javascript - 仅在单击文本框后才在网格中加载数据
- android - 我需要在带有动画的地图上显示带有 GroundOverlay 的世界地图
- react-native - 无法从 Object 获取数据
- python - 如何使用 JEP(Java Embedded Python)设置 Python 解释器?
- c# - 如何使用滚动视图位置设置淡入淡出功能
- python-3.x - 使用python的多个用户在服务器上访问谷歌日历
- r - 读取csv数据时如何避免R中的因素