如何解决如何排除某些用户的某些数据?
我有一个主管理员,在 admin 列的 users 表中的值为 2。也有值为 1 的普通管理员和值为 0 的用户。
主管理员可以指定其他用户为管理员并获得管理员权限。我有一个用户列表页面,我设法进行了 sql 查询,以便没有任何常规管理员显示主管理员。我还想确保其他常规管理员不会显示常规管理员,而是为主管理员显示。怎么做? sql 有例外吗?我读了一些关于 EXCLUDE 的内容,但我不知道它是否对我有帮助。有没有更简单的方法来做到这一点的想法?
$ceo = 2;
$sql = $connection->prepare("SELECT id,name,email,admin,position,blocked,deleted FROM workers WHERE email!=? AND admin!=?");
$sql->bind_param("si",$_SESSION['user'],$ceo);
$sql->execute();
$users_listdb = $sql->get_result()->fetch_assoc();
$ _SESSION['user']
包含任何授权用户的电子邮件地址。
解决方法
您可以仅使用 if
语句根据用户级别更新 SQL 查询。
假设用户已登录并且用户的 id 是一个 $id
变量。
// User ID's
$main_admin_id = 2;
$admin_id = 1;
$user_id = 0;
$sql = "SELECT id,name,email,admin,position,blocked,deleted FROM workers WHERE email != ?";
if ($id == 1) $sql .= ' AND (admin = ? OR admin = ?)';
else if ($id == 0) $sql .= ' AND admin = ?';
$stmt = $connection->prepare($sql);
if ($id == 0) $stmt->bind_param('si',$_SESSION['user'],$user_id);
else if ($id == 1) $stmt->bind_param('sii',$main_admin_id,$admin_id);
else $stmt->bind_param('s',$_SESSION['user']);
$stmt->execute();
$users_listdb = $sql->get_result()->fetch_assoc();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。