感谢您查看此内容。我有一个拥有用户,角色和数据库的数据库。 user_roles。 我想要实现的是一个登录,它将选择具有管理员或关联权限的用户。登录然后使用名称和密码来允许访问。
到目前为止我的SQL语法是 -
SELECT * FROM users
LEFT JOIN ON user_roles
ON user.id=user_roles.userid AND roleid IN (Administrator, Associate)
WHERE username = '$username' AND password = '$password'";
我不确定我哪里出错了。
提前感谢您的帮助。
答案 0 :(得分:1)
尝试用“INNER JOIN”替换“LEFT JOIN”
答案 1 :(得分:0)
以下是我编写查询的方法:
$stmt = $pdo->prepare("
SELECT (u.password = :password) AS password_is_correct,
(r.roleid IS NOT NULL) AS role_is_authorized
FROM users u
LEFT JOIN ON user_roles r
ON u.id=r.userid AND r.roleid IN (Administrator, Associate)
WHERE u.username = :username");
$stmt->execute(array(":password"=>$password, ":username"=>$username));
这使您可以区分这三个条件:(1)用户名不存在,(2)密码错误,或(3)角色未授权。
PS:应该引用“管理员”和“助理”还是什么?你使用它们的方式,它们看起来像标识符而不是值。