2016-06-08 3 views
0

10 분 안에 내 사이트에서 얼마나 많은 사용자가 온라인 상태인지 표시하고 표시하려고하지만 코드에 문제가 있습니다.PHP로 온라인 사용자 수를 계산하십시오.

//Count online users 
//Data on DB: 2016-06-08 03:15:21 

    $onlinesql = $odb -> prepare("SELECT `users`.`lastactivity` count(*) FROM `users` WHERE `lastactivity` >= DATE_SUB(NOW(), INTERVAL 10 MINUTE"); 
    $onlinesql -> execute(array(":id" => `lastactivity`)); 
    $rowonline = $onlinesql -> fetch(); 

    echo $rowonline; 

온라인 사용자 수가 반환되지 않습니다. 어떻게 작동시킬 수 있습니까? 이 당신은 당신의 SQL을 다시 방문 할 수있는 가장 빠른 방법

답변

0
SELECT count(*) FROM `users` WHERE `lastactivity` >= DATE_SUB(NOW(), INTERVAL 10 MINUTE) 

수 (id)를 사용하거나 (lastactivity)를 계산하기 위해 필요 없음, 그냥, COUNT (*)를 사용합니다. 다음은 예입니다.

<?php  
     $sql  = "SELECT COUNT(U.*) FROM `users` U WHERE u.lastactivity >= DATE_SUB(NOW(), INTERVAL 10 MINUTE)"; 
     $onlineSQL = $odb ->prepare($sql); 
     $onlineSQL -> execute(); 
     $numOnline = $onlineSQL->fetch(); 

     var_dump($numOnline); 
+0

아, 죄송합니다. 'SELECT count (*) as count' – newbie67

0

때문에

+0

작동하지 않았습니다. PHP 알림 : /Applications/MAMP/htdocs/central/index.php에서 121 행의 문자열 변환에 배열' –

+0

@ Joy Cooper. .. $ numOnline은 Array이므로 Array를 다시 echo하려고합니다. 이제 var_dump()로 바 꾸었습니다. 그것을 시도하고 당신이 얻는 것을보십시오 .... ;-) – Poiz

0

아약스를 사용할 수 있습니다. 사용자 테이블에서 enum 필드를 생성합니다. '0'=> 오프라인이고 '1'=> 온라인 두 개의 setInterval 함수를 사용하여 2 분마다 사용자 상태를 ajax 및 다른 것으로 업데이트합니다 ajax가있는 데이터베이스에서 '1'상태의 사용자 수를 얻으려면.

관련 문제