Foreach更新sql循环不会创建循环

时间:2016-07-17 19:45:13

标签: php mysql sql foreach

我对这些代码有一些奇怪的问题:

包含

内的表单的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仅更新第一项。大多数情况下,我需要更新多个项目。问题在哪里?

非常感谢你!

1 个答案:

答案 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>函数。更改为mysqlmysqli

四。您应该使用Prepared Statements进行更新查询,否则您的代码很容易受到SQL注入。