2013-07-14 2 views
-4

J'essaie de créer une barre en ligne/hors ligne pour mon profil utilisateur. Il semble ne pas fonctionner à 100% parce qu'il est toujours en ligne. J'utilise le script suivant pour elle:rowCount() renvoie un nombre de lignes incorrect

<?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>'; 
    } 
?> 

J'ai déjà essayé le script avec num_rows > 0 et == 0, mais rien ne semble fonctionner. J'ai également essayé de le faire dans l'autre sens d'abord num_row > 0 puis num_row < 0 mais cela n'a pas fonctionné.

Aussi pour la réponse pour les personnes suivantes. Ceci est mon script pour les réponses:

<?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

Essayez de penser * ce * que vous sélectionnez. –

+0

Utiliser COUNT (*) 'et faire' rowCount() 'n'a pas de sens. – samayo

Répondre

0

Vous sélectionnez COUNT(*) donc vous demande entraînera toujours une réponse: la ligne elle-même compte.

Vous pouvez définir un alias sur le nombre et l'utiliser ...

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

... ou tout sélectionner:

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

Merci de travailler maintenant! – jacmob

Questions connexes