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