This question already has answers here:
Count rows from results of a “mysql_query”
(9个答案)
MySQL - count total number of rows in php
(10个答案)
count number of rows in table using php
(6个答案)
How can I count the numbers of rows that a mysql query returned?
(8个答案)
PHP SQL get SELECT COUNT(user) to variable
(5个答案)
10个月前关闭。
我有一个数据库表timestamps_sessions包含用户在我的网页上开始练习的时间戳,只有当用户真正完成练习时才会更新。因此,每一行总是在started列中有一个值,但不总是在finished列中。后者默认为NULL
当我在Sequel Pro中查询时,我的SELECT COUNT()语句工作得很好,并返回正确的整数11。也就是说:实际上只有11行的值同时在startedfinished中。
但是当我在PHP中执行它时,它返回一个包含
{
    current_field: null,
    field_count: null,
    lengths: null,
    num_rows: null,
    type: null
}

我在Sequel Pro中成功查询的语句如下:
SELECT COUNT(finished) FROM timestamps_sessions

我在PHP中使用失败的语句如下:
$sql = "SELECT COUNT(finished) FROM timestamps_sessions";
$result = $conn->query($sql);
$exercise['clears'] = $result;

对同一个数据库和同一个表执行其他几个SELECT查询时没有问题。似乎只有COUNT()语句出现故障。
我做错了什么,我该怎么做呢?
我的目标是计算具有非空finished列的行数,而不传递实际数据以保留带宽。我只需要整数。

最佳答案

首先,$result是预期的对象。这是mysqli::query()方法返回的结果。在访问此查询中的数据之前,需要先获取它。如果您为该计数提供别名,则会更容易,因为访问该计数会更容易。

$sql = "SELECT COUNT(finished) as cnt FROM timestamps_sessions";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$exercise['clears'] = $row['cnt'];

mysqli::query() docs
mysqli::fetch_assoc() docs

关于php - SELECT COUNT(*)返回一个对象,而不是整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54379299/

10-16 18:23