PHP中的搜索功能存在问题


Problems with search feature in PHP

我在数据库中有两个表

bpi_registration

bpi_schoolInfo

bpi_registration中的字段为

id,id_school, first_name,last_name,city,state,email

bpi_schoolInfo中的字段为

id_school,school_name,school_state

我正试图创建一个搜索功能,这样每当我从下拉列表中选择学校名称时,就会显示该特定学校的学生姓名及其信息。当我选择学校名称时,URL如下所示:https://www.example.com/retrieve1.php?Grade=&School=kipp+spark+academy&Team=&Students=

我写的代码是:

if (isset($_GET['School']))
{
    $sql= "SELECT * FROM bpi_schoolInfo
    INNER JOIN bpi_registration ON bpi_registration.id_school = bpi_schoolInfo.id_school";
    $userQuery = "{$sql} WHERE bpi_schoolInfo.id_school = :school_id";
    $user = $db->prepare($userQuery);
    $user->execute(['school_id' => $_GET['School']]);
    $selectedUser=$user->fetch(PDO::FETCH_ASSOC);
    if(isset($selectedUser))
    {
        echo '<tr>';
        echo '<td>' . $selectedUser['first_name'] . '</td>';
        echo '<td>' . $selectedUser['last_name'] . '</td>';
        echo '<td>' . $selectedUser['email'] . '</td>';
        echo '<td>' . $selectedUser['address_city'] . '</td>'; 
        echo '<td>' . $selectedUser['address_state'] . '</td>'; 
        echo '<td>' . $selectedUser['address_country'] . '</td>'; 
        echo '</tr>';
    }
}

然而,由于某种原因,当我点击学校名称时,我无法看到该学校的学生名单。我认为我的查询有问题,如果有人能在这里帮助我,我将不胜感激。

$_GET['School']包含学校名称,但您将其与查询中的学校ID进行比较。应该是:

    $userQuery = "{$sql} WHERE bpi_schoolInfo.school_name = :school_id";

或者,您应该更改URL以发送学校ID而不是名称。