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


How to check mysql db is user is part of a group

这可能是一个简单的问题,但我有一个登录页面,希望用户根据LDAP进行身份验证,这很好。

我创建了一个mysql数据库,在其中创建了一张带有用户登录名的表,并希望在成功登录后进行检查,以在我的数据库中验证试图进行身份验证的用户是否属于Administrator组(在我的数据表中定义)。

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

本机DB名称=imc.directory.tool表名称=tbl_staff------------------------------------------------|ID|用户名|组|------------------------------------------------|1|用户名1|管理员|------------------------------------------------|2|用户名2|客人|------------------------------------------------|3|用户名3|客人|------------------------------------------------

您可以在任何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开发人员不喜欢使用的方法。

  • 这是一篇关于这个主题的文章:为什么SELECT被认为是有害的

然而,你确实说过这是针对ASP.net的,我对此一无所知。

旁注:group是MySQL保留字,需要特别注意。

可以用记号将单词括起来,也可以使用其他名称,例如"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;   
}

参考文献:

  • http://php.net/manual/en/book.pdo.php
  • http://php.net/pdostatement.fetchcolumn.php
  • http://dev.mysql.com/doc/refman/5.1/en/counting-rows.html