2014-09-21 151 views
-1

如果我做一个循环经过数据库中的一定数量的id,我怎么能只回声一次,而不是每次它通过一个id循环?我的代码显示在:如何在while循环PHP中只显示最终结果?

$query = "SELECT userid FROM users "; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)) 
{ 
echo "There are currently <b> ". $row['userid'] ."</b> users registered in our server database!"; 
echo "<br />"; 
} 
+1

如果你想获得数据库使用的行数选择计数(1)作为用户总数..然后没有必要使用while循环。选项2使用mysql_num_rows – 2014-09-21 11:45:42

+0

停止使用mysql。这是不推荐使用mysqli或PDO – 2014-09-21 11:53:21

回答

0

你应该做一个SELECT COUNT()来获得用户数。

+0

谢谢,我怎么会这么笨! – 2014-09-21 11:52:04

+0

@ Mr.Blue没问题;) – 2014-09-22 06:28:55

0

我意识到你只是希望用户数

你应该使用

$query = "SELECT count(*) as count FROM users "; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)) 
{ 
echo "There are currently <b> ". $row['count'] ."</b> users registered in our server database!"; 
echo "<br />"; 
} 
+0

查询将只返回一行。那么为什么要使用while循环。计数(1)更有效的计数(*) – 2014-09-21 11:52:52

+0

count(*)-v- count(1)没有区别(*不会评估每个字段或导致大量的I/O ,这恐怕是一个神话) – 2014-09-21 12:10:43

0

可以使用COUNT(userid)代替mysql_fetch_array()

$query = "SELECT COUNT(userid) FROM users"; 
$result = mysql_query($query) or die(mysql_error()); 

也可以使用MAX(userid),如果它是一个int类型

$query = "SELECT MAX(userid) as total_users FROM users"; 
$result = mysql_query($query) or die(mysql_error()); 
$row = mysql_fetch_assoc($result); 
$total_user = $row['total_users']; 
相关问题