如何为某些用户排除某些数据?

How to exclude some data for some users?

我有一个主管理员,在管理员列的用户 table 中的值为 2。还有值为1的常规管理员,值为0的用户

主管理员可以指定其他用户为管理员并获得管理员权限。我有一个用户列表页面,我设法进行了 SQL 查询,以便 none 的常规管理员显示主管理员。我还想确保常规管理员不会显示给其他常规管理员,而是显示给主管理员。怎么做? 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', $_SESSION['user'], $main_admin_id, $admin_id);
else $stmt->bind_param('s', $_SESSION['user']);

$stmt->execute();
$users_listdb = $sql->get_result()->fetch_assoc();