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"];
}
}
}