我有一个数据库表timestamps_sessions,其中包含用户在我的网页上开始练习的时间戳,并且只有在用户实际完成练习时才会更新。因此,每一行在started列中总是有一个值,但在finished列中并不总是有一个值。后者默认情况下为NULL。
当我在Sequel Pro中查询我的SELECT COUNT()语句时,它可以完美地工作,并返回正确的整数11。也就是说:实际上只有11行同时具有started和finished的值。
然而,当我在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列的行数,而不传递实际数据以保留带宽。我只需要一个整数。
发布于 2019-01-26 22:38:02
首先,不出所料,$result是一个对象。它是mysqli::query()方法返回的结果。在访问此查询中的数据之前,您需要获取数据。如果你给计数一个别名,这会更容易,因为它会变得更容易访问计数。
$sql = "SELECT COUNT(finished) as cnt FROM timestamps_sessions";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$exercise['clears'] = $row['cnt'];发布于 2019-01-26 22:44:48
传递给count函数的参数可以是任何东西,因为您只需要行数,而不是它们的数据。
SELECT COUNT(1) FROM timestamps_sessions WHERE finished IS NOT NULL;发布于 2019-01-26 22:38:23
您缺少代码mysql_fetch_array,以便获取第一条记录
$sql = "SELECT COUNT(finished) totals FROM timestamps_sessions";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$total = $row['totals'];https://stackoverflow.com/questions/54379299
复制相似问题