Php 如果选中,则将动态创建的复选框值输入MySQL
我从MySQL中的问题表中提取问题,并将其填充到表单中。这很好,我正在填充复选框,并且该值已填充QuestionID。数组已正确填充,但我希望选取复选框的值(这是我的问题ID)并将该ID插入表中,这样我就有了根据其ID选择使用的问题。以下是我迄今为止的情况:Php 如果选中,则将动态创建的复选框值输入MySQL,php,Php,我从MySQL中的问题表中提取问题,并将其填充到表单中。这很好,我正在填充复选框,并且该值已填充QuestionID。数组已正确填充,但我希望选取复选框的值(这是我的问题ID)并将该ID插入表中,这样我就有了根据其ID选择使用的问题。以下是我迄今为止的情况: //Declare the QuestionID as a array $QuestionID = array(); while($row = mysqli_fetch_array($run,MYSQLI_ASSOC)){ echo '
//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=chkQuestion align="left"/><p>' . $row['Question'] .'</p></div><br/><br/>';
//Assign the QuestionID from the table to the var
$QuestionID[] = $row['QuestionID'];
}
if($_POST['submitted']) {
if (isset($_POST['chkQuestion']))
{
//create the query for the score
$sql2 = "INSERT INTO tbl_QuestionSelected (`QuestionID`) VALUES ($QuestionID)";
//Run the query
$run2 = @mysqli_query ($conn,$sql2);
//Confirm message data was entered with a correct response and a graphic
echo '<h1>Submitted!!</h1>';
}
}//End of IF 'submitted
//将QuestionID声明为数组
$QuestionID=数组();
而($row=mysqli\u fetch\u数组($run,mysqli\u ASSOC)){
回显“”.$row['Question']”。
;
//将表中的QuestionID分配给变量
$QuestionID[]=$row['QuestionID'];
}
如果($_POST['submitted']){
如果(isset($_POST['chkQuestion']))
{
//为分数创建查询
$sql2=“插入tbl_QuestionSelected(`QuestionID`)值($QuestionID)”;
//运行查询
$run2=@mysqli_查询($conn,$sql2);
//确认输入了正确的响应和图形的消息数据
echo“已提交!!”;
}
}//已提交的IF结束
我的理解是,您希望在一条语句中插入多条记录
$sql2 = "INSERT INTO `tbl_QuestionSelected` (`QuestionID`) VALUES(". implode('),(', $QuestionID) . ")";
这将把$QuestionID
中的每个索引与),(
如果您要回显$sql2
,您将得到
INSERT INTO `tbl_QuestionSelected` (`QuestionID`) VALUES(1),(2),(3)
试着循环你的身份证并逃脱
$ids_list = '';
foreach($_POST["chkQuestion"] as $id)
{
$ids_list .= (strlen($ids_list) > 0 ? ',' : '').mysql_real_escape_string($id);
}
$sql2 = "INSERT INTO tbl_QuestionSelected (`QuestionID`) VALUES (".$ids_list.")";
您可以使用循环获取已检查的问题
for($i=0;$i<count($_POST["chkQuestion"]);$i++) {
"INSERT INTO tbl_QuestionSelected (QuestionID) VALUES('".$_POST["chkQuestion"][$i]."');
}
for($i=0;$i这将基于数组为值分配值,并将其插入MySQL:
//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="QuestionID[' . $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 $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);
}//End of IF 'submitted
}
//将QuestionID声明为数组
$QuestionID=数组();
而($row=mysqli\u fetch\u数组($run,mysqli\u ASSOC)){
回显“.$row['Question']”。
;
//将表中的QuestionID分配给变量
$QuestionID[]=$row['QuestionID'];
}
如果($_POST['submitted']){
$ids_list='';
foreach($_POST[“QuestionID”]作为$key=>$value){
{
$ids_list.=(strlen($ids_list)>0?,':'').mysql_real_escape_string($value);
}
$sql2=“插入tbl_问题选定(`QuestionID`)值(“..$ids_列表”)”;
//运行查询
$run2=@mysqli_查询($conn,$sql2);
}//已提交的IF结束
}
所以其他一切都是正确的问题为什么它不将任何信息提交到我的表中是我的SQL语句?不要抑制执行时的错误,可能前面有一个错误。可能它甚至没有到达if语句。是的,我将根据选中的复选框数量进行多次插入,并且它将需要插入id that被设置为与问题关联的复选框的值我回答说,你还有第二个问题吗?这是我的insert语句,因为如果我将值硬编码为1,它将插入到表中,但作为硬编码ID(显然),并且仅用于1个复选框,如果我选择了multiplessorry,则使用你的Post数组$\u Post[“chkQuestion”]
这可能是一个愚蠢的问题,但这不是foreach($\u POST[“chkQuestion”]作为$id)所做的吗?它循环每个数组?我的回答并不粗鲁,因为你的回答不起作用,我只是想了解原因。对不起