gpt4 book ai didi

php - 如何使用sql中的两个表数据进行管理登录?

转载 作者:行者123 更新时间:2023-11-29 11:01:31 25 4
gpt4 key购买 nike

我有 3 个表用户角色权限

用户表

users

角色

roles

权限

permissions

users表中,user1是管理员,当角色表中的roleId为13且权限表中的view为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

关于php - 如何使用sql中的两个表数据进行管理登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42152761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com