如何使用HTML数组和PHP POST同时插入2个输入值?

tvz2xvvm  于 2022-11-27  发布在  PHP
关注(0)|答案(1)|浏览(150)

我尝试使用HTML数组在MYSQL表中传递2个数组,我想在循环的同时将两个值插入同一行,当然嵌套循环是行不通的,第一个输入值成功传递,但第二个输入插入了错误的和不相关的值。我确信这是因为for循环逻辑不完整,但我似乎无法适应任何帮助都将不胜感激
HTML(... PHP内部的html代码,然后这个,$row ['id']是应该传递给POST的值):

<input type="text" id="mytextbox" name="comment[]" placeholder = "Add your comments here" required>
<input type="text" id="mytextbox" list="decision[]" name="decision" placeholder = "Choose your decision" required>
<datalist id="decision[]">';
echo '<option value="'.htmlspecialchars($row['id']).'">'.htmlspecialchars($row['name']).'</option>';

<input type="text" id="mytextbox" name="comment[]" placeholder = "Add your comments here" required>
<input type="text" id="mytextbox" list="decision[]" name="decision" placeholder = "Choose your decision" required>
<datalist id="decision[]">';
    echo '<option value="'.htmlspecialchars($row['id']).'">'.htmlspecialchars($row['name']).'</option>';
   
<input type="text" id="mytextbox" name="comment[]" placeholder = "Add your comments here" required>
<input type="text" id="mytextbox" list="decision[]" name="decision" placeholder = "Choose your decision" required>
<datalist id="decision[]">';
    echo '<option value="'.htmlspecialchars($row['id']).'">'.htmlspecialchars($row['name']).'</option>';

PHP(在成功POST $comment作为输入(1)& $decision作为输入(2)和工作查询之后):

for ($i=0;$i<count($comment);$i++){
  $query = "INSERT INTO table (otherid,col1,col2) VALUES ('$otherid','$comment[$i]','$decision[$i]')";
  $result = $dbc->query($query);
}
ajsxfq5m

ajsxfq5m1#

您只得到了最后一个决定,因为您没有在字段名中使用方括号,就像在注解字段中一样。name="decision"必须是name="decision[]"。只有这样,PHP才会创建一个数组,其中包含多个同名的传递参数;如果没有方括号,它们只是相互覆盖。
重复的ID只对客户端很重要-从这些列表中选择,可能不会填充正确的输入字段,但如果您手动填充这些字段,它与实际提交的内容几乎没有关系。但您应该能够使这些ID动态化,例如通过追加行ID。
<datalist id="decision-123">,并在输入字段上匹配list="decision-123"

相关问题