MySQLi计数(*)总是返回1

我试图计算表中的行数,并认为这是做到这一点的正确方法:

$result = $db->query("SELECT COUNT(*) FROM `table`;"); $count = $result->num_rows; 

但计数总是返回(int)1 。 如果我在phpMyAdmin中使用相同的查询,我会得到正确的结果。 它坐在一个表中,所以我也试着testing$count[0] ,但是返回NULL

什么是正确的方法来做到这一点?

您必须获取该logging,它将包含Count()的结果

 $result = $db->query("SELECT COUNT(*) FROM `table`"); $row = $result->fetch_row(); echo '#: ', $row[0]; 

总是尝试做一个联想抓取,这样你可以很容易地得到你想要的在多个情况下的结果

这是一个例子

 $result = $mysqli->query("SELECT COUNT(*) AS cityCount FROM myCity") $row = $result->fetch_assoc(); echo $row['cityCount']." rows in table myCity."; $result->close(); 

我发现这种方式更可读:

 $result = $mysqli->query('select count(*) as `c` from `table`'); $count = $result->fetch_object()->c; $result->free(); $mysqli->close(); echo "there are {$count} rows in the table"; 

不是我有任何反对arrays…

这对我很好。

  // Veh Pro Count $query_tvp = "SELECT count(*) as total from submit"; if ($result_tvp = $mysqli->query("$query_tvp")) { /* determine number of rows result set */ $total_tvp = $result_tvp->fetch_row(); $total_tvp = $total_tvp['0']; /* close result set */ $result_tvp->close(); } echo "Total: $total_tvp"; 

$ result-> NUM_ROWS; 仅返回受查询影响的行数。 当你在一个表上执行一个计数(*)时,它只返回一行,所以你不能得到比1更多的结果。