Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQLi count(*)始终返回1_Php_Mysql_Mysqli - Fatal编程技术网

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";