【发布时间】: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"> 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