如何检查mysql db是用户是组的一部分

时间:2015-02-27 15:52:32

标签: php mysql

这可能是一个简单的问题,但我有一个登录页面,我希望用户对LDAP进行身份验证,并且工作正常。

我创建了一个mysql数据库,我在其中创建了一个包含用户登录名的表,并希望在成功登录后进行检查,以便在我的数据库中验证尝试进行身份验证的用户是否为Administrator组的一部分(在我的数据库表中定义) )。

如果这是有效的,则将它们重定向到url1,如果没有,则将它们重定向到URL2。在这一点上,我只需要帮助SQL查询部分,因为我不太熟悉它。

Localhost
DB name=imc.directory.tool
Table name=tbl_staff
------------------------------------------------
| ID    | username           | group            |
------------------------------------------------
| 1     | username1          | Administrator    |
------------------------------------------------
| 2     | username2          | Guest            |
------------------------------------------------
| 3     | username3          | Guest            |
------------------------------------------------

1 个答案:

答案 0 :(得分:0)

您可以在任何SQL语句和您选择的API中使用以下内容。

SELECT ID FROM tbl_staff 
WHERE username='username1' 
AND `group`='Administrator'

或(旁注:column_x,column_y是列示例名称):

SELECT column_x, column_y FROM tbl_staff 
WHERE username='username1' 
AND `group`='Administrator'

您也可以SELECT *选择所有列,但这通常是许多SQL开发人员不喜欢使用的方法。

但是,你确实说这是针对ASP.net的,这是我不知道的事情。

旁注: groupMySQL reserved word,需要特别注意。

通过将单词包装在刻度中,或者使用其他名称,例如" groups"例如。

这是一个使用预准备语句的PDO方法:

$db = new PDO("mysql:host=localhost;dbname=db_name", $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$username = "username1";
$group = "Administrator";

$query = "SELECT COUNT(*) FROM tbl_staff 
         WHERE username = :username 
         AND `group` = :username";

$statement = $db->prepare($query);
$statement->bindValue(':username', $username);
$statement->bindValue(':password', $group);
$statement->execute();
$count = $statement->fetchColumn();
if ($count === 1)
{
    return TRUE;
}
else 
{
    return FALSE;   
}

参考文献: