$ _POST显示数组和数据

时间:2019-04-08 01:59:56

标签: php sql arrays

我仍在学习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

1 个答案:

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