我仍在学习PHP,但遇到了一些麻烦, 我有一个根据 $ _ POST 信息填充的SQL查询。
我的问题是,对于 $ _ POST 字段之一,“成绩” ,它是一个多选字段。发送此数据时,成绩仅选择并显示最后一个输入。
我已将“成绩”放在表格中的数组中。
<select name="grade[]" multiple>
我已经计算出可以使用foreach循环显示选定的数组,但是,仅显示选定的成绩。我还需要它来显示其他字段,例如“主题”和“姓氏”。
以下是代码段。
<?php
$report = $_POST['report'];
$subject = $_POST['subject'];
$grade = $_POST['grade'];
$sql = "SELECT * FROM ".$report." WHERE Subject ='$subject' AND `Outcome_1` ='$grade' ";
//AND `Outcome_1` ='$grade'
$result = mysqli_query($conn,$sql);
if (!empty($result) && $result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "Subject: " .$row['Subject']."" .$row['Surname']. "" .$row['Outcome_1']. "<br/>";
} else {
echo "0 results";
}
?>
当前,如果用户在表单上选择“ A”和“ B”。
以上输出将仅显示:
主题:数学博客B
我希望它显示:
主题:数学Bloggs A
主题:数学博客B
答案 0 :(得分:0)
您可以像这样设置sql ...
$sql = "SELECT * FROM {$report} WHERE Subject ='{$subject}' AND `Outcome_1` IN ({implode(',', $grade)}) ";
然后,SQL中的数据看起来像...
... WHERE Outcome_1 IN (22, 20, 21)
您可以使用implode
函数使$grade
到(22, 20, 21)
implode(',', [20,22,21])