2013-07-14 39 views
-4

我正嘗試在我的用戶配置文件中創建一個在線/離線欄。它似乎不能100%工作,因爲它總是在線顯示。我使用下面的腳本吧:rowCount()返回不正確的行數

<?php 
    $user = $req_user_info['username']; 
    $sql = $db->query("SELECT COUNT(*) FROM blog_active_users 
             WHERE `username` = {$user}"); 
    $num_rows = $sql->rowCount(); 
    if (!$sql || ($num_rows < 0)) { 
     echo '<div class="span2 alert alert-error"><h4>offline</h4></div>'; 
    } else if ($num_rows > 0) { 
     echo '<div class="span2 alert alert-success"><h4>online </h4></div>'; 
    } 
?> 

我已經嘗試過的腳本num_rows > 0== 0但似乎沒有任何工作。 我也試圖在第一個num_row > 0,然後num_row < 0,但沒有奏效。

也爲以下人的答案。這是我的答案腳本:

<?php 
$user = $req_user_info['username']; 
$sql = $db->query("SELECT * FROM blog_active_users WHERE `username` = '".$req_user_info['username']."'"); 
$num_rows = $sql->rowCount(); 
if(!$sql || ($num_rows == 0)){ 
echo '<div class="span2 alert alert-error"><h4>offline</h4></div>'; 
}else{ 
echo '<div class="span2 alert alert-success"><h4>online </h4></div>'; 
} 
?>  
+1

儘量想什麼* *您選擇。 –

+0

使用'COUNT(*)'和'rowCount()'沒有意義。 – samayo

回答

0

您選擇COUNT(*),因此你的請求將總是導致1個回答:行數本身。

您可以設置COUNT一個別名,並用它...

$sql = $db->query("SELECT COUNT(*) AS my_count FROM blog_active_users WHERE `username` = {$user}"); 
$num_rows = $sql->fetch(PDO::FETCH_OBJ)->my_count; 

...或者選擇一切:

$sql = $db->query("SELECT * FROM blog_active_users WHERE `username` = {$user}"); 
$num_rows = $sql->rowCount(); 
+0

謝謝你現在工作! – jacmob