MySQLi count(*)总是返回1

时间:2010-08-31 20:43:21

标签: php mysql mysqli

我正在尝试计算表中的行数,并认为这是正确的方法:

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

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

这样做的正确方法是什么?

7 个答案:

答案 0 :(得分:87)

你必须获取那条记录,它将包含Count()

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

答案 1 :(得分:6)

总是尝试进行关联提取,这样就可以轻松获得多种情况下的结果

这是一个例子

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

$result->close();

答案 2 :(得分:1)

$ result-> NUM_ROWS;仅返回受查询影响的行数。当您在表上执行计数(*)时,它只返回一行,因此您不能得到除1之外的其他结果。

答案 3 :(得分:0)

我发现这种方式更具可读性:

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

并非我对数组有任何意义......

答案 4 :(得分:0)

这对我有用。

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

答案 5 :(得分:0)

它的样本。

$query="select count(*)as count from users";
$result=$connection->query($query);
$count=mysqli_fetch_assoc($result)["count"];
echo $count;

答案 6 :(得分:-2)

对我来说,这是有效的,这是你想要数的时候 寄存器内的重复元素。

例如:在表单中标记为“是”的人数。

表:用户

注册:投票

注册元素:是/否

$sql_user = "SELECT COUNT(*) FROM users WHERE vote = 'yes'";    
$result1 = $mysqli->query($sql_user);    
$row1 = $result1->fetch_row();    
$n_yes = $row1['0'];