我需要根据唯一的ip找到唯一的行,然后在单个查询中获取用户排序的结果。
我正在尝试这种方式
$query="SELECT
COUNT(DISTINCT `userip`) AS `count`,
`userid` AS `userid`
FROM `tablename`
WHERE (`date` >= UNIX_TIMESTAMP(CURDATE())) GROUP BY `userid`";
$result = mysqli_query($connection, $query) or trigger_error(mysqli_error($connection), E_USER_ERROR);
$row = mysqli_fetch_assoc($result);
print_r($row);
这给了我最后一个用户的结果
Array ( [count] => xxx [userid] => last_user);
我需要在单个查询中为每个用户获取此结果
Array (
Array ( [count] => xxx [userid] => first_user);
.
.
Array ( [count] => xxx[userid] => last_user);
)
请查看是否可以这样做,并建议一种方法。 感谢
修改
感谢所有答案,解决方案正在运行我正在检查行上的查询而不是结果。
答案 0 :(得分:1)
我认为可以通过这种方式完成
$query = "SELECT
COUNT(*) AS `count`,
`userid` AS `userid`
FROM `tablename`
WHERE (`date` >= UNIX_TIMESTAMP(CURDATE())) GROUP BY `userid`";
答案 1 :(得分:1)
我认为你应该在userip和userid列上使用group by。看看以下查询是否适合您。
SELECT COUNT( `userip`) AS `count`, `userid` AS `userid` FROM `tablename` WHERE (`date` >= UNIX_TIMESTAMP(CURDATE())) GROUP BY userid,userip;
答案 2 :(得分:1)
哦,你必须在循环中获取结果
while($row = mysqli_fetch_assoc($result))
{
print_r($row);
}
答案 3 :(得分:1)
SELECT DISTINCT(u_ip), count(u_id) AS count FROM t1 GROUP BY u_ip;
然后使用for loop
或foreach
for ($i=0;$i<$row;$i++)
{
echo "<tr><td>".$result["u_id"][$i]."</td><td>".$result["count"][$i];
}
或使用
foreach ($result as $res){}