首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SELECT COUNT(*)返回对象而不是整数

SELECT COUNT(*)返回对象而不是整数
EN

Stack Overflow用户
提问于 2019-01-26 22:28:09
回答 4查看 1.6K关注 0票数 2

我有一个数据库表timestamps_sessions,其中包含用户在我的网页上开始练习的时间戳,并且只有在用户实际完成练习时才会更新。因此,每一行在started列中总是有一个值,但在finished列中并不总是有一个值。后者默认情况下为NULL

当我在Sequel Pro中查询我的SELECT COUNT()语句时,它可以完美地工作,并返回正确的整数11。也就是说:实际上只有11行同时具有startedfinished的值。

然而,当我在PHP中执行它时,它返回一个包含以下内容的对象

代码语言:javascript
复制
{
    current_field: null,
    field_count: null,
    lengths: null,
    num_rows: null,
    type: null
}

我在Sequel Pro中成功查询的语句如下:

代码语言:javascript
复制
SELECT COUNT(finished) FROM timestamps_sessions

我在PHP中未成功使用的语句如下:

代码语言:javascript
复制
$sql = "SELECT COUNT(finished) FROM timestamps_sessions";
$result = $conn->query($sql);
$exercise['clears'] = $result;

对相同的数据库和相同的表执行了其他几个SELECT查询,没有问题。似乎只有COUNT()语句出现了故障。

我做错了什么,我应该怎么做?

我的目标是计算具有非空finished列的行数,而不传递实际数据以保留带宽。我只需要一个整数。

EN

回答 4

Stack Overflow用户

发布于 2019-01-26 22:38:02

首先,不出所料,$result是一个对象。它是mysqli::query()方法返回的结果。在访问此查询中的数据之前,您需要获取数据。如果你给计数一个别名,这会更容易,因为它会变得更容易访问计数。

代码语言:javascript
复制
$sql = "SELECT COUNT(finished) as cnt FROM timestamps_sessions";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$exercise['clears'] = $row['cnt'];

票数 3
EN

Stack Overflow用户

发布于 2019-01-26 22:44:48

传递给count函数的参数可以是任何东西,因为您只需要行数,而不是它们的数据。

代码语言:javascript
复制
SELECT COUNT(1) FROM timestamps_sessions WHERE finished IS NOT NULL;
票数 1
EN

Stack Overflow用户

发布于 2019-01-26 22:38:23

您缺少代码mysql_fetch_array,以便获取第一条记录

代码语言:javascript
复制
$sql = "SELECT COUNT(finished) totals FROM timestamps_sessions";
$result = $conn->query($sql);
$row = $result->fetch_assoc();

$total = $row['totals'];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54379299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档