php测验在两个不同的结果集中有问题和答案

时间:2017-11-30 17:30:47

标签: php mysql resultset multiple-resultsets

我正在进行一个有问题及其选择的测验。问题和选项都来自结果集中的数据库。我在循环和结果集中遇到问题。

1 - 我无法从每个问题中选择选项。每当我从问题1中选择选项时,我都无法从问题2中选择选项。

2 - 我的页面正在重新加载等于测验中的问题数量。例如,我在测验中有两个问题然后页面重新加载两次,如果有5个问题则重新加载5次。

if(@$_GET['q']== 'quiz' && @$_GET['step']== 2) {
$eid=@$_GET['eid'];
$sn=@$_GET['n'];
$total=@$_GET['t'];
$a=1;
$b=0;
$q=mysqli_query($con,"SELECT count(*) FROM questions WHERE eid='$eid'" );
while($row=mysqli_fetch_array($q) ){
    $b=$row['count(*)'];
}
echo '<div class="panel" style="margin:5%">';
for($a=1;$a<=$b;$a++){
$q=mysqli_query($con,"SELECT * FROM questions WHERE eid='$eid' AND sn='$a' " );
while($row=mysqli_fetch_array($q) )
{
$qns=$row['qns'];
$qid=$row['qid'];
echo '<b>Question &nbsp;'.$a.'&nbsp;:<br />'.$qns.'</b><br />';
$q=mysqli_query($con,"SELECT * FROM options WHERE qid='$qid' " );
echo '<form action="update.php?q=quiz&step=2&eid='.$eid.'&n='.$sn.'&t='.$total.'&qid='.$qid.'" method="POST"  class="form-horizontal">
<br />';
while($row=mysqli_fetch_array($q) )
{
$option=$row['option'];
$optionid=$row['optionid'];
echo'<input type="radio" name="ans" value="'.$optionid.'">'.$option.'<br />';
}
echo '<br /><br />';
}
}
echo'<br /><button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span>&nbsp;Submit</button></form></div>';
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

所以,在蝙蝠的右边,我看到了一些问题。

Easy SQL注入是最重要的。您使用GET请求,因此您从URL获取信息。我可以简单地转义引号,结束该查询并从URL运行删除。您在设置$q时执行此操作。

How can I prevent SQL injection in PHP?

无需在count() MySQL语句上执行while循环。它返回一行。

您设置$a,然后再次为for循环设置它。查看foreach循环...

很抱歉,我无法帮助您处理代码。它需要完全重做,因为还有其他逻辑错误。您需要了解html <form>并且您只能提交一个表单。此外,在HTML中,元素的id必须是唯一的。这可能是您只能提交一个问题回复的原因。此外,您有许多表单,以便一旦找到回答问题的方法,您将只提交其中一个。

看起来你似乎试图用尽可能少的代码行完成所有事情,但是你还不明白你在做什么。