PHP mysqli只显示一个用户

kez*_*iah 0 php mysql arrays mysqli loops

我想实现这一目标

  • 约翰 - >子用户
  • 约翰 - >子用户
  • mark - > sub user
  • mark - > 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/>';
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是数据库结构

账户

user_id | username |
--------+----------+
 1      | john     |
--------+----------+
 2      | mark     |
--------+----------+
 3      | dave     |
--------+----------+
Run Code Online (Sandbox Code Playgroud)

信息

iuid     |
---------+
1        |
---------+
2        |
---------+
3        |
---------+
Run Code Online (Sandbox Code Playgroud)

销售

suid    | mentor   |
--------+----------+
 1      | john     |
--------+----------+
 2      | mark     |
--------+----------+
 3      | dave     |
--------+----------+
Run Code Online (Sandbox Code Playgroud)

Jay*_*ard 5

您可以使用一个查询获取所有数据,而不是使用两个.由于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
Run Code Online (Sandbox Code Playgroud)

当您返回行时,您将拥有$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/>';
   }

}
Run Code Online (Sandbox Code Playgroud)