php - Mysql 连接两个 Id 以获得用户名

标签 php mysql pdo

我正在尝试获取包含 MYSQL 查询结果的数组。 我有 2 个 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++;
}

最佳答案

您加入表格的方式是错误的。你可以得到你想要的精确记录,你需要加入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'] 

关于php - Mysql 连接两个 Id 以获得用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12869428/

相关文章:

PHP 骗子。如何创建N个独特的词?

PHP 特征 - 定义通用常量

php - 匹配选择最新行的主要问题

java - JDBC 类未找到异常

php - 使用来自 php 的 shell 脚本生成 android apk?

php - 通过 TCP 将实时数据发送到网页

c# - 如何使用 LINQ - Entity Framework 从表中选择存在于联结表中的元素

PHP PDO - 我该怎么做

mysql - 使用 PDO 和参数更改表?

php - 使用pdo执行存储过程