PHP mysqli 只显示一个用户

标签 php mysql arrays loops mysqli

我要实现这个

  • john -> sub user
  • john -> sub user
  • mark -> sub user
  • mark -> sub user
  • dave -> sub user
  • dave -> sub user

但这是意外的输出

  • john -> sub user
  • john -> sub user

只有用户名 john 出现了

// Get all the users
$s = $sqlConnection->query('SELECT * FROM accounts');

while ($row = $s->fetch_assoc())
{
    $uarr = explode(',', $row['username']);

    foreach ($uarr as $ueach)
    {        
        // Get all the direct sales
        $query = "SELECT *";
        $query .= " FROM accounts ACC";
        $query .= " INNER JOIN info INF ON ACC.user_id = INF.iuid";
        $query .= " INNER JOIN sales SAL ON ACC.user_id = SAL.suid";
        $query .= " WHERE SAL.mentor = '$ueach'";

        $s = $sqlConnection->query($query);

        if (!$s) 
        {
            die($sqlConnection->error);
        }

        while ($row = $s->fetch_assoc())
        {
            echo $ueach . ' -> ' . $row['username'] . '<br/>';
        }
    }
}

数据库结构

帐户

user_id | username |
--------+----------+
 1      | john     |
--------+----------+
 2      | mark     |
--------+----------+
 3      | dave     |
--------+----------+

信息

iuid     |
---------+
1        |
---------+
2        |
---------+
3        |
---------+

销售

suid    | mentor   |
--------+----------+
 1      | john     |
--------+----------+
 2      | mark     |
--------+----------+
 3      | dave     |
--------+----------+

最佳答案

您可以通过一次查询获取所有数据,而不是使用两次。由于 JOIN,您需要的数据很容易获得:

SELECT SAL.mentor AS mentor, ACC.username AS username
FROM accounts ACC
LEFT JOIN info INF ON ACC.user_id = INF.iuid
LEFT JOIN sales SAL ON ACC.user_id = SAL.suid
ORDER BY SAL.mentor

当您返回行时,您将可以使用 $row['mentor']$row['username']

$query = "SELECT SAL.mentor AS mentor, ACC.username AS username ";
$query .= "FROM accounts ACC ";
$query .= "LEFT JOIN info INF ON ACC.user_id = INF.iuid ";
$query .= "LEFT JOIN sales SAL ON ACC.user_id = SAL.suid ";
$query .= "ORDER BY SAL.mentor ";

$s = $sqlConnection->query($query);

if (!$s) 
{
     die($sqlConnection->error);
} 
else 
{
    while ($row = $s->fetch_assoc())
   {
        echo $row['mentor'] . ' -> ' . $row['username'] . '<br/>';
   }

}

关于PHP mysqli 只显示一个用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37701974/

相关文章:

php - 比较两个非常相似的表中的所有个人记录,其中包含大量数据

arrays - 将 Array<Struct> 返回为 Array<Any> 时出错

arrays - Bash 间接引用关联数组

php - 数组和 SQL 中的重复数据问题

php - 如何使用 PHP 加快查询速度?

php - 如何在搜索中使用 substr 函数

php - 寻找某个空白区域?

mysql - 投影中属性的顺序是否会影响 SQL 查询的执行速度?

mysql - 在 ActiveRecord 中按星期几进行分组、排序和计数

c - 如何使用 read 将字符正确存储在数组中?