我要实现这个
- 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/