Php 刷新时,值会不断添加到下拉列表中

Php 刷新时,值会不断添加到下拉列表中,php,Php,代码: 值来自数据库,每当我刷新时,都会添加重复的值。我不知道该怎么办。这是因为每次刷新页面时(可能是每次getEmployeeId()方法调用),都会执行SQL查询,并将员工ID附加到$\u会话['id']数组中。您需要将该代码块封装在if块中 public function getEmployeeId() { if (!isset($_SESSION["email"]) || !isset($_SESSION["passwrd"])) { header

代码:


值来自数据库,每当我刷新时,都会添加重复的值。我不知道该怎么办。

这是因为每次刷新页面时(可能是每次
getEmployeeId()
方法调用),都会执行SQL查询,并将员工ID附加到
$\u会话['id']
数组中。您需要将该代码块封装在
if
块中

public function getEmployeeId() {
        if (!isset($_SESSION["email"]) || !isset($_SESSION["passwrd"])) {
            header("Location:index.php");
            // Cannot Access this page without Login.
        }


            $_SESSION['ids'][] = "";
            $query = mysqli_query($this->connection, "SELECT EmployeeId from employees where EmployeeId NOT IN(Select EmployeeId from employeeprofile)") or die("Query execution failed: " . mysqli_error());
            while ($row = $query->fetch_assoc()) {
                // Push the id to the array.
                $_SESSION['ids'][] = $row["EmployeeId"];
            }


    }


侧注:您需要添加
exit()
标题(…)语句,因为
头(…)本身不足以将用户重定向到其他页面。

什么是$\u SESSION['id']@abby应该是
$\u SESSION['id']
,我已经更新了我的答案。请使用更新的代码段测试您的应用程序。在
标题()之后缺少
退出()
,请参阅。这将设置一个竞争条件,在此条件下,PHP执行将一直进行,直到连接被客户端终止为止,这很少是您想要的。你会编辑答案吗?@halfer是的,你是对的。我也加了这个。因为OP并没有提到页面重定向的任何问题,所以代码块被忽略了。感谢您指出这一点。:-)谢谢Rajdeep@艾比:见上面的注释。
public function getEmployeeId() {
    if (!isset($_SESSION["email"]) || !isset($_SESSION["passwrd"])) {
        header("Location:index.php");
        exit();
    }

    if(!isset($_SESSION['ids']) && count($_SESSION['ids']) == 0){
        $_SESSION['ids'][] = "";
        $query = mysqli_query($this->connection, "SELECT EmployeeId from employees where EmployeeId NOT IN(Select EmployeeId from employeeprofile)") or die("Query execution failed: " . mysqli_error());
        while ($row = $query->fetch_assoc()) {
            $_SESSION['ids'][] = $row["EmployeeId"];
        }   
    }
}