每个循环错误的PHP

时间:2012-07-12 16:01:53

标签: php

我有一个遍历数组的循环,并且每个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

2 个答案:

答案 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);


}