我对这些代码有一些奇怪的问题:
包含
内的表单的while循环 <?php
$sql = "SELECT * FROM sessions WHERE SES = '$SES' ORDER BY ID DESC";
$preorders = mysql_query($sql);
while ($pre = mysql_fetch_array($preorders)) { ?>
<tr>
<td class="center">
<form id="update" action="update" method="post">
<input type="number" name="QTY[]" value="<?=$pre[QTY]?>" min="1" max="100">
<input type="hidden" name="ID[]" value="<?=$pre[ID]?>">
</form></td>
</tr>
<?php } ?>
提交按钮
<button type="submit" form="update">Update</button>
处理页面
foreach ($_POST['ID'] as $key => $ID) {
$QTY = $_POST['QTY'][$key];
mysql_query("UPDATE sessions SET QTY= '$QTY' WHERE ID = '$ID' ");
}
问题
该foreach仅更新第一项。大多数情况下,我需要更新多个项目。问题在哪里?
非常感谢你!
答案 0 :(得分:0)
您的代码存在多种问题。首先,您在此输入的名称中使用$response = $controller->storeMission($request);
:
[]
以及此输入:
<input type="number" name="QTY[]" value="<?=$pre[QTY]?>" min="1" max="100">
您可能希望将它们放在<input type="hidden" name="ID[]" value="<?=$pre[ID]?>">
标记内。
二。您只有一个更新按钮,但有多个表单。每个表单都需要自己的更新按钮,需要包含在每个<?php ... ?>
元素中。
第三。您正在使用已弃用的<form>
函数。更改为mysql
或mysqli
。
四。您应该使用Prepared Statements进行更新查询,否则您的代码很容易受到SQL注入。