Mysql加入两个Id来获取用户名

时间:2012-10-13 02:27:47

标签: php mysql pdo

我试图进入包含MYSQL查询结果的Array。 我有两个id存储在表hitlist user_id和mark_id中 他们需要加入表用户来检索那些与id匹配的用户名以及将来的其他变量。

我以一种奇怪的方式工作,并希望以一种类似于此的更有效的简单方式工作

$Hitlists = $db->query("SELECT * FROM hitlist JOIN users ON hitlist.user_id = users.id AND hitlist.mark_id = users.id")->fetchAll();

这是我正在使用的代码...现在它看起来可能会在以后给我带来问题。

<?php
$index = 0;
$Hitlists = array();
$st = $db->query("SELECT * FROM hitlist JOIN users ON hitlist.user_id = users.id")->fetchAll();
$sth = $db->query("SELECT * FROM hitlist JOIN users ON hitlist.mark_id = users.id")->fetchAll();

foreach($st as $id) 
{
    $Hitlists[] = $id;
}

foreach($sth as $id) 
{
        $Hitlists[$index]['markedby'] = $id['username'];
        $Hitlists[$index]['mark_id'] = $id['mark_id'];
        $index++;
}

1 个答案:

答案 0 :(得分:3)

你加入赌桌的方式是错误的。您可以获得所需的确切记录,需要两次加入users表格以获取每个ID的用户名

SELECT  a.*, 
        b.username User_name,
        c.username mark_name      
FROM    hitlist a
        INNER JOIN users b
            ON  a.user_id = b.id 
        INNER JOIN users c
            ON  a.mark_id = c.id

您可以访问

$result['User_name'] 
$result['mark_name']