【问题标题】:Query updates only the last value查询仅更新最后一个值
【发布时间】:2018-08-30 00:52:27
【问题描述】:

在我的项目中,我有一个表,我使用 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>

如您所见,表格位于表单内,表格中的每一行都有一个复选框。

这是我的数据库表的屏幕截图。如您所见,有一个名为可用性的字段,它们的值被“锁定”。 当我单击提交时,我想将这些锁定的字段更新为“已返回”,其中勾选了复选框。 其他没有打勾的不要更新。

所以,这就是我所做的。

    if (isset($_POST['submit'])) {
        $update_query = "UPDATE req SET availability = 'returned' WHERE doc_id='$_POST[return]'";
        mysqli_query($conn, $update_query);
    }

我的问题是,此查询仅更新我勾选的最后一行,因为它在循环完成后获取值。它不会更新我选择的所有行。因此,如果您有任何想法如何实现这一点,请帮助我。

【问题讨论】:

  • 你能显示$_POST['return']数组里面的内容吗?

标签: php html mysql


【解决方案1】:
   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]

【讨论】:

  • 我仍然得到相同的结果
  • 您可以尝试回显查询并在此处发布吗?
  • 我添加了一个 vaar_dump 并回显它。 C:\wamp64\www\Survey\returnDoc.php:29:boolean false
【解决方案2】:

首先,您需要确保发送的是选中复选框的行的 id 数组。

然后在您的代码中执行此操作:

if (isset($_POST['submit'])) {
    $update_query = "UPDATE req SET availability = 'returned' WHERE doc_id IN " . implode(',', $_POST[return]);
    mysqli_query($conn, $update_query);
}

implode 将返回与第一个参数(在我们的例子中为',')粘合的数组元素的字符串。

【讨论】:

  • 嗨,这给我带来了错误提示(!)警告:内爆():传递的参数无效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 2020-01-12
  • 2020-11-13
  • 2017-09-09
  • 2022-08-13
相关资源
最近更新 更多