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