Php MySQLi count(*)始终返回1
我试图计算表中的行数,并认为这是正确的方法:Php MySQLi count(*)始终返回1,php,mysql,mysqli,Php,Mysql,Mysqli,我试图计算表中的行数,并认为这是正确的方法: $result = $db->query("SELECT COUNT(*) FROM `table`;"); $count = $result->num_rows; 但是计数总是返回(int)1。如果我在phpMyAdmin中使用相同的查询,我会得到正确的结果。它位于一个表中,所以我也尝试测试$count[0],但返回NULL 正确的方法是什么?您必须获取一条记录,它将包含Count()的结果 始终尝试执行关联提取,这样您就可以在多个案
$result = $db->query("SELECT COUNT(*) FROM `table`;");
$count = $result->num_rows;
但是计数总是返回(int)1
。如果我在phpMyAdmin中使用相同的查询,我会得到正确的结果。它位于一个表中,所以我也尝试测试$count[0]
,但返回NULL
正确的方法是什么?您必须获取一条记录,它将包含Count()的结果
始终尝试执行关联提取,这样您就可以在多个案例结果中轻松获得所需内容 这里有一个例子
$result = $mysqli->query("SELECT COUNT(*) AS cityCount FROM myCity")
$row = $result->fetch_assoc();
echo $row['cityCount']." rows in table myCity.";
$result->num_行;仅返回受查询影响的行数。当您对一个表执行计数(*)时,它只返回一行,因此您不能得到除1以外的其他结果。我发现这种方法更具可读性:
$result = $mysqli->query('select count(*) as `c` from `table`');
$count = $result->fetch_object()->c;
echo "there are {$count} rows in the table";
我并不反对阵列…谢谢!因此,num_行只应用于
SELECT*
而不是SELECT COUNT
?更多或更少,是的num_rows
可以告诉您有多少条结果记录已传输到客户端。如果这是您想要知道的数字,那么应该使用num_行。如果您想知道数据库中有多少条记录(不将数据传输到客户端),请使用Count(*)。奇怪的是,多个案例结果是什么意思?使用case语句进行多次计数的选择?不正确。mysqli_result::$num_rows返回结果集的行数。mysqli::$infected_rows返回受查询影响的行数。
$result = $mysqli->query('select count(*) as `c` from `table`');
$count = $result->fetch_object()->c;
echo "there are {$count} rows in the table";