Php 仅显示循环中的一组数据

Php 仅显示循环中的一组数据,php,mysqli,Php,Mysqli,我相信造成这个问题的原因是我设置的动态WHERE子句。下面是动态WHERE子句的工作原理: q.SessionId=? 如果用户从student下拉菜单中选择single student,则将和sa.StudentId=?添加到WHERE子句中 如果用户从学生下拉菜单中选择Allstudents选项,则从WHERE子句中删除或不显示和sa.StudentId=? 如果用户从问题下拉菜单中选择单个问题,则将和q.QuestionId=?添加到WHERE子句中 如果用户从问题下拉菜单中选择Allq

我相信造成这个问题的原因是我设置的动态WHERE子句。下面是动态WHERE子句的工作原理:

  • q.SessionId=?
  • 如果用户从student下拉菜单中选择single student,则将
    和sa.StudentId=?
    添加到WHERE子句中
  • 如果用户从学生下拉菜单中选择
    All
    students选项,则从WHERE子句中删除或不显示
    和sa.StudentId=?
  • 如果用户从问题下拉菜单中选择单个问题,则将
    和q.QuestionId=?
    添加到WHERE子句中
  • 如果用户从问题下拉菜单中选择
    All
    questions选项,则从WHERE子句中删除或不显示
    和q.QuestionId=?
我有三个下拉菜单(下面是示例数据的外观):

会话:

<select name="session" id="sessionsDrop">
<option value="26">POKUB1</option>
<option value="27">POKUB2</option>
</select>
<select name="student" id="studentsDrop">
<option value="0">All</option>
<option value="39">Luke Mcfadzen</option>
<option value="40">Chris Tucker</option>
</select>
<select name="question" id="questionsDrop">
<option value="0">All</option>
<option value="72">1</option>
<option value="73">2</option>
</select>
以下是
$\u POST['student']
$\u POST['question']
可能的变量转储:

单个学生和单个问题:

<select name="session" id="sessionsDrop">
<option value="26">POKUB1</option>
<option value="27">POKUB2</option>
</select>
<select name="student" id="studentsDrop">
<option value="0">All</option>
<option value="39">Luke Mcfadzen</option>
<option value="40">Chris Tucker</option>
</select>
<select name="question" id="questionsDrop">
<option value="0">All</option>
<option value="72">1</option>
<option value="73">2</option>
</select>
  • 学生:克里斯·塔克-弦乐(2)“40”
  • 问题:1-字串(2)“72”
单个学生和所有问题:

<select name="session" id="sessionsDrop">
<option value="26">POKUB1</option>
<option value="27">POKUB2</option>
</select>
<select name="student" id="studentsDrop">
<option value="0">All</option>
<option value="39">Luke Mcfadzen</option>
<option value="40">Chris Tucker</option>
</select>
<select name="question" id="questionsDrop">
<option value="0">All</option>
<option value="72">1</option>
<option value="73">2</option>
</select>
  • 学生:克里斯·塔克-弦乐(2)“40”
  • 问题:全部-字符串(1)“0”
所有学生和单个问题:

<select name="session" id="sessionsDrop">
<option value="26">POKUB1</option>
<option value="27">POKUB2</option>
</select>
<select name="student" id="studentsDrop">
<option value="0">All</option>
<option value="39">Luke Mcfadzen</option>
<option value="40">Chris Tucker</option>
</select>
<select name="question" id="questionsDrop">
<option value="0">All</option>
<option value="72">1</option>
<option value="73">2</option>
</select>
  • 学生:全部-字符串(1)“0”
  • 问题:1-字串(1)“72”
所有学生和所有问题:

<select name="session" id="sessionsDrop">
<option value="26">POKUB1</option>
<option value="27">POKUB2</option>
</select>
<select name="student" id="studentsDrop">
<option value="0">All</option>
<option value="39">Luke Mcfadzen</option>
<option value="40">Chris Tucker</option>
</select>
<select name="question" id="questionsDrop">
<option value="0">All</option>
<option value="72">1</option>
<option value="73">2</option>
</select>
  • 学生:全部-字符串(1)“0”
  • 问题:全部-字符串(1)“0”
下面是示例
var\u dump($questions)如果我选择
All
学生和
All
问题:

array(1) { 
[39]=> array(4) { 
["studentalias"]=> string(8) "u4838229" 
["studentforename"]=> string(5) "Chris" 
["studentsurname"]=> string(6) "Tucker" 
["questions"]=> array(1) { 
[72]=> array(11) { 
["questionno"]=> int(1) 
["content"]=> string(14) "What is a RAM?" 
["optiontype"]=> string(3) "A-E" 
["noofanswers"]=> int(1) 
["answer"]=> string(7) "B,C,D,E" 
["replytype"]=> string(6) "Single" 
["questionmarks"]=> int(5) 
["studentanswer"]=> string(9) "A,B,C,D,E" 
["responsetime"]=> string(8) "00:00:07" 
["mouseclick"]=> int(1) 
["studentmark"]=> string(1) "2" } } } }
空的() (菲律宾比索4,菲律宾比索5)

empty-如果变量为空,则确定变量是否为空返回FALSE 存在并具有非空,非零值。否则返回TRUE


您可能希望对
All
选项使用
0
以外的值。

您是否可以尝试使用
-1
作为
All
选项,而不是
0
?另外,执行前还要检查变量转储($selectedstudentanswerqry)
,检查它是否有效。您好,很抱歉,我刚刚跑腿,我现在回来了,我会尝试一下您的解决方案并让您知道。实际上,你能让我知道这个值应该被准确地称为
value“…”
,因为我假设我不能只做
value='empty'
我的意思是
除了
0
之外的所有
<编程语言中的代码>0
==
false
。而
empty(0)
函数将为其返回false。$selectstudentanswerqry的var\u dump显示查询对每个选项都正确执行,但输出仍然是将所有学生答案合并为一个,并将所有答案合并为一个。所以,如果我选择所有学生,它将显示一个学生,一个问题,但随后将每个问题的所有答案显示为问题1,并将每个问题的所有学生答案显示为问题1。这有意义吗?