我不明白...我有一个标题表,上面有3个titles--Manager-Secretary-Captain.一个用户可以有多个标题。这就是我所做的。
'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;
}
}发布于 2015-08-24 19:38:30
使用left join:
'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';https://stackoverflow.com/questions/32181177
复制相似问题