Php MySQL计数查询结果始终为1
我想知道为什么我的MySQLPhp MySQL计数查询结果始终为1,php,mysql,count,Php,Mysql,Count,我想知道为什么我的MySQLCOUNT(*)查询总是导致->num\u行相等1 $result = $db->query("SELECT COUNT( * ) FROM u11_users"); print $result->num_rows; // prints 1 然而,从数据库中获取“真实数据”效果很好 $result = $db->query("SELECT * FROM u11_users"); print $result->num_rows; // prin
COUNT(*)
查询总是导致->num\u行
相等1
$result = $db->query("SELECT COUNT( * ) FROM u11_users");
print $result->num_rows; // prints 1
然而,从数据库中获取“真实数据”效果很好
$result = $db->query("SELECT * FROM u11_users");
print $result->num_rows; // prints the correct number of elements in the table
原因可能是什么?因为Count(*)
只返回一行行数
例如:
使用Count(*)
结果如下所示。array('COUNT(*)' => 20);
echo $result['COUNT(*)']; // 20
它应该返回一行*。要获得计数,您需要:
$result = $db->query("SELECT COUNT(*) AS C FROM u11_users");
$row = $result->fetch_assoc();
print $row["C"];
*由于您使用的是聚合函数,而不是使用
groupby
这就是存在COUNT
的原因,因此它总是返回一行所选行数
Count()是一个聚合函数,这意味着它只返回一行包含实际答案。如果你使用像max(id)这样的函数,你会看到同样类型的东西;如果一列中的最大值是142,那么您不会期望看到142条记录,而是看到一条值为142的记录。同样,如果行数是400,并且您要求计数(*),那么您将不会得到400行,而是得到一行,答案是:400
因此,要获得计数,您需要运行第一个查询,只需访问第一(也是唯一)行中的值
顺便说一句,您应该使用这个count(*)方法,而不是查询所有数据并获取$result->num\u行代码>因为查询所有行将花费更长的时间,因为您要收回一堆不需要的数据