如何在SQL中使用两个表数据进行管理员登录?

凯文

我有3张桌子usersroles并且permissions

用户表

使用者

角色

角色

权限

权限

users表中user1是Admin,当角色表中的roleId为13且权限表中的视图为1时,他必须登录。如何为此编写查询。我尝试了一些东西,但是没有用

Adminmodel.php

public function auth($data){
        $sql="SELECT * FROM users
                WHERE email='". $data['email'] . "'
                AND password='". $data['password']."'
                AND roleId=13
                UNION
                SELECT roleId FROM permissions 
                WHERE view=1" ;
                ;

        $query=$this->db->query($sql);
        return $query;
    }

管理员登录controller.php

public function auth(){
        $username=$this->input->post("username");
        $password=md5($this->input->post('password'));
        $data['email']=$username;
        $data['password']=$password;
        $q=$this->Adminmodel->auth($data);
        $result=0;
        $status=0;
        if($q->num_rows()>0){
            $result=$q->row()->status==0?-1:1;
            if($result==1){
                $admindata=array(
                        'cp_adminid'=>$q->row()->userId,
                        'cp_roleid'=>$q->row()->roleId
                );
                $this->session->set_userdata($admindata);
                if (!is_dir('private/'.$q->row()->userId)) {
                    $oldmask = umask(0);
                    $q=mkdir('private/' .$q->row()->userId,0777,true);
                    umask($oldmask);
                    copy('public/images/default_user.png','private/'.$q->row()->userId.'/default-profile_pic.png');
                }
                }else{

                }

                //$msg="error occured";
            }

        $data['result']=$result;
        //$res=$this->load->view("user/userhome",$data,true);
        $value=array(
                'result'=>$result,

        );
        echo json_encode($value);
    }
纳西

用于JOINS代替UNIONJOINS用于定义不同表之间的关系并基于它们获取数据。

对于您的问题,这将起作用。

SELECT * FROM users u
JOIN roles r ON r.roleId = u.roleId
JOIN permissions p ON p.roleId = r.roleId
WHERE email='". $data['email'] . "'
AND password='". $data['password']."'
AND r.roleId=13
AND p.view=1

另请参阅此链接以获取MYSQL JOINS的基础知识:http : //www.w3schools.com/sql/sql_join.asp

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 java netbeans 进行管理员和用户登录

使用 Visual Studio 2019 中的一个登录按钮进行管理员和用户登录

如何在 SQL 中使用两个表进行聚合?

如何进行管理员确认以显示网站中的数据

如何在SQL中使用两个信息表

如何在WordPress管理员中比较两个复选框数组

登录后如何使用sql中的会话获取两个表数据,但我使用1个表数据进行登录

Codeigniter会话已登录客户以进行管理员登录

Django:如何在表单/管理员中使用MultipleChoiceField

如何在 ktor 2.0 中使用 firebase 管理员

在 django 站点中使用两个设置(prod 和 dev),dev 不允许管理员

如何在Rails 6中使用acitve admin登录到管理员帐户和用户帐户?

如何在类似搜索中使用 ORM 从两个表中获取数据 - 使用 Laravel

如何在数据属性中使用两个或多个值进行过滤(显示/隐藏)

如何删除两个管理员帐户中的一个?

如何在Simple OData Client中使用join从两个表中检索数据?

如何在Codeigniter的视图中使用两个表数据

如何在Codeigniter中使用单个查询在两个单独的表中插入数据?

如何在yii2中使用来自两个表的显示数据

如何在Laravel中使用口才关系在视图中显示两个表数据

如何在sql中使用两个布尔字段对OR条件进行建模?

如何在两个表中使用 php foreach

如何在两个表联接中使用“ where”?

仅在设置了特定环境变量的情况下,如何才能要求在Django站点上进行管理员登录?

“以管理员身份运行”的两个定义?

即将有两个管理员通知

无法使用以下kubernetes YAML文件生成CSR以进行管理员批准

在angular JS上使用firebase secret进行管理员更新是否安全?

Oracle SQL - 如何使用两个表进行数据透视并比较记录