2015-11-13 45 views
1

我想显示正在联机的用户和用户的总数。然而,也有两个简单的查询:返回行的预备语句计数数

SELECT id FROM users; 

SELECT id FROM users WHERE online=1; 

,这是我的第statement

if($stmt = $mysqli->prepare("SELECT id FROM users")) 
    { 
     $stmt->execute(); 
     $stmt->fetch(); 
     $totalcount = $stmt->num_rows; 
     $stmt->close(); 
     $stmt = null; 

    } 

第二码:

if($stmt = $mysqli->prepare("SELECT id FROM users WHERE online=?")) 
    { 
     $requ = 1; 
     $stmt->bind_param("i", $requ); 
     $stmt->execute(); 
     $stmt->bind_result($onlineUsers); 
     $stmt->fetch(); 
     $count = $stmt->num_rows; 
     $stmt->close(); 
     $stmt = null; 

    } 

它是什么t返回作为用户和在线用户的总数。你如何执行这样的检查?

+0

还,确保您得到预期的结果通过在MySQL客户端运行查询 – eggmatters

回答

1

不是选择所有行,而是执行SELECT COUNT(*)查询,以便计数作为结果返回。事实上,你可以在这两个查询合并为一个:

if ($stmt = $mysqli->prepare("SELECT COUNT(*), SUM(online = ?) FROM users") { 
    $requ = 1; 
    $stmt->bind_param("i", $requ); 
    $stmt->execute(); 
    $stmt->bind_result($totalcount, $count); 
    $stmt->fetch(); 
    $stmt->close(); 
    $stmt = null; 
} 
+0

谢谢,这个人的工作完美! – Jan