Количество записей в DB PHP

Я создаю функцию, чтобы показать, сколько пользователей сейчас в сети. Это зависит от того, кто открыл страницу за последние 5 минут. Каждая загрузка страницы сохраняется в моей БД, ниже:

Таблица базы данных

На данный момент у меня есть следующий код

$query = mysql_query("SELECT user_id, timestamp FROM user_actions WHERE timestamp > date_sub(now(), interval 5 minute)"); $onlineUsers = mysql_num_rows($query); 

Это просто суммирует количество строк, как я могу это сделать, поэтому он только учитывает user_id один раз? (поэтому в приведенном выше фрагменте базы данных это должно быть 2 не 5)

Поскольку mysql_* устарел (php 5) и удален (php 7). Итак, mysqli_* : –

 <?php error_reporting(E_ALL); ini_set('display_errors',1); $conn = mysqli_connect('localhost','username','password','db name');//change credentials here $online_users = array(); if($conn){ $query = mysqli_query($conn,"SELECT DISTINCT(user_id), timestamp,page FROM user_actions WHERE timestamp > date_sub(now(), interval 5 minute)"); if($query){ while($row = mysqli_fetch_assoc($query)){ $online_users[] = $row; } }else{ echo "query error:-".mysqli_error($conn); } }else{ echo "db connection error:-".mysqli_connect_error(); } ?> <table> <tr> <thead> <th>User Id</th> <th>timestamp></th> <th>Page Visited</th> </thead> </tr> <tbody> <?php foreach($online_users as $online_user){?< <tr> <td><?php echo $online_user['user_id'];?></td> <td><?php echo $online_user['timestamp'];?></td> <td><?php echo $online_user['page'];?></td> </tr> <?php }?> </tbody> </table> 

Примечание. Если вы хотите показать онлайн-имя пользователя, тогда вам нужно сделать JOIN query .

измените таблицу таблицы соответственно.

Это пример кода. измените его соответствующим образом.

использовать ключевое слово DISTINCT

  $query = mysql_query("SELECT DISTINCT(user_id), timestamp FROM user_actions WHERE timestamp > date_sub(now(), interval 5 minute)"); $onlineUsers = mysql_num_rows($query); 

Вы можете использовать группу, например,

 SELECT user_id, timestamp FROM user_actions WHERE timestamp > date_sub(now(), interval 5 minute) group by user_id;