我有一个遍历数组的循环,并且每个checkbox
被选中我想将值(也是动态引入)放入我的QuestionSelected
表中。我收到此错误"Warning: Invalid argument supplied for foreach()"
,我无法将结果存入我的表格。这是我正在尝试的代码:
//Declare the QuestionID as a array
$QuestionID = array();
while($row = mysqli_fetch_array($run,MYSQLI_ASSOC)){
echo '<div id="QuestionSelection"><input id="chkQuestion" type="checkbox" value=" '.$row['QuestionID'].'" name="question_'.$row['QuestionID'].'">' .$row['Question']. '</p></div><br/><br/>';
//Assign the QuestionID from the table to the var
$QuestionID[] = $row['QuestionID'];
}
if($_POST['submitted']) {
$ids_list = '';
foreach($_POST["QuestionID"] as $id)
{
$ids_list .= (strlen($ids_list) > 0 ? ',' : '').mysql_real_escape_string($id);
}
$sql2 = "INSERT INTO tbl_QuestionSelected (`QuestionID`) VALUES (".$ids_list.")";
}//End of IF 'submitted
答案 0 :(得分:1)
问题在于,在表单中,您没有使用数组,而是构建名称值,如:
name="question_'.$row['QuestionID'].'"
因此$_POST["QuestionID"]
不存在且不是数组。
您可以将您的姓名更改为:
name="QuestionID[]"
因此它是一个数组,你甚至可以使用实际的id作为键:
name="QuestionID[' . $row['QuestionID'] . ']"
答案 1 :(得分:0)
这解决了问题并且有效:
$ids_list = '';
foreach($_POST["QuestionID"] as $key=>$value) {
{
$ids_list .= (strlen($ids_list) > 0 ? ',' : '').mysql_real_escape_string($value);
}
$sql2 = "INSERT INTO tbl_QuestionSelected (`QuestionID`) VALUES (".$ids_list.")";
//Run the query
$run2 = @mysqli_query ($conn,$sql2);
}