【问题标题】:SQL insert from variable amount of HTML check boxes从可变数量的 HTML 复选框插入 SQL
【发布时间】:2021-06-20 05:10:36
【问题描述】:

我有一个带有复选框的用户输入。复选框的数量可以在数量上有所不同,因为它们是通过提取生成的。我想将每个选定复选框的相应值传输到一个表中,并为每个选定的复选框创建一行。我的问题是,我当前的代码只取最后一个复选框的值。不知道如何在这里实现 foreach。

我的代码目前如下所示:

HTML Checkbox 示例可以从 1 重复到无限制。名称始终相同,但 value 和 id 正在改变:

<input type="checkbox" class="custom-control-input" name="questionaire_id" id="100" value="100">
<label class="custom-control-label mb-3" for="100"> &nbsp; Some_Name - 100 </label>

PDO查询PHP

 if (isset($_POST['speichern'])) {

 $questionaire_id = $_POST['questionaire_id'];

    $statement = $pdo->prepare("INSERT INTO audit_bundles(questionaire_id) VALUES (:questionaire_id)");
    $result = $statement->execute(array('questionaire_id' => $questionaire_id));
}

【问题讨论】:

  • “名字总是一样的” - 那是你的问题。名称必须是唯一的,否则,服务器将如何区分不同的复选框? ID 与提交无关,只有名称和值。
  • 不确定我理解正确,但听起来你会使用经典的for循环,但首先获取当前显示的复选框数量,然后绑定“计数”的值结果的变量。这样迭代的数量总是与复选框的数量相同。
  • 对于具有多个实例的复选框,您需要在名称末尾附加[]。 IE。如果您将名称更改为questionaire_id[],那么服务器将在$_POST['questionaire_id'] 中存储一个值数组,而不是最后检查的值。

标签: php sql pdo foreach insert


【解决方案1】:

我找到了适合我的解决方案。它从选定的复选框中获取值并创建一行。不管我有多少复选框。

if (isset($_POST['speichern'])) {

    $statement = $pdo->prepare("INSERT INTO audit_bundles (questionaire_id) VALUES (?)");
    $statement->bindParam(1, $questionaire_id);

    foreach ($_POST['questionaire_id'] as &$value) {

    // insert row
    $questionaire_id = $value;
    $statement->execute();

    }    

【讨论】:

    猜你喜欢
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2017-01-23
    • 1970-01-01
    • 2014-10-20
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多