gpt4 book ai didi

php - 获取多对多表中的所有数据

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

我不明白...我有一个包含 3 个头衔的标题表 - 经理-秘书-队长。一位用户可以拥有多个头衔。这就是我所做的...

'SELECT u.*, t.*, ut.*
FROM users u
JOIN user_title ut
ON ut.user_id = u.id
JOIN titles t
ON ut.title_id = t.id
WHERE u.id = 7';

现在,当我在 phpMyAdmin 中运行它时,效果很好,分配给 user.id 7 的所有 3 个标题都会显示。但是,当我在 IDE 中使用它(通过 php)时,我只返回“Manager”,即第一个数据行。已经这样一个星期了,我相信我已经失去理智了。有什么建议么?这是我的实际代码...

 public function validateLogin($email, $pass, $title){
global $dbh;

$sql = 'SELECT u.*, p.*, t.*, ut.*
FROM passwords p
JOIN users u
ON p.user_id = u.id
JOIN user_title ut
ON ut.user_id = u.id
JOIN titles t
ON ut.title_id = t.id
WHERE u.email = :email AND p.password = :pass';

$stmt = $dbh->prepare($sql);

$stmt->execute(['email'=>$email, 'pass'=> md5($pass . $this->getSalt())]);
$data = $stmt->fetch();

if($stmt->rowCount()>0){
$stmt->closeCursor();
$_SESSION['user']['title'] = $title;
$_SESSION['user']['loggedin'] = true;
$_SESSION['user']['name'] = $data['first_name'];
return true;
}else{
$_SESSION['user']['loggedin'] = false;
return false;
}
}

最佳答案

改用左连接:

'SELECT u.*, t.*, ut.*
FROM users u
LEFT JOIN user_title ut
ON ut.user_id = u.id
LEFT JOIN titles t
ON ut.title_id = t.id
WHERE u.id = 7';

关于php - 获取多对多表中的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32181177/

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