首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从多对多表中获取所有数据

从多对多表中获取所有数据
EN

Stack Overflow用户
提问于 2015-08-24 19:26:32
回答 1查看 42关注 0票数 0

我不明白...我有一个标题表,上面有3个titles--Manager-Secretary-Captain.一个用户可以有多个标题。这就是我所做的。

代码语言:javascript
运行
复制
'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',也就是第一行数据。我已经干了一个星期了,我想我快疯了。有什么建议吗?这是我的实际代码。

代码语言:javascript
运行
复制
 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;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2015-08-24 19:38:30

使用left join:

代码语言:javascript
运行
复制
'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';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32181177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档