我有一个数据库表timestamps_sessions
,其中包含用户何时开始在我的网页上进行锻炼的时间戳记,并且仅在用户实际完成锻炼时才进行更新。因此,每一行在started
列中始终都有一个值,但并非总是在finished
列中都有。后者默认为NULL
。
我的SELECT COUNT()
语句在Sequel Pro中查询时可以完美地工作,并返回正确的整数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
列的行数,而不传递实际数据以保留带宽。我需要的只是整数。
答案 0 :(得分:3)
首先,$result
是预期的对象。这是mysqli::query()
方法返回的结果。您需要先获取它,然后才能从该查询访问数据。如果给计数取别名,将会更容易,因为访问计数变得更容易。
$sql = "SELECT COUNT(finished) as cnt FROM timestamps_sessions";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$exercise['clears'] = $row['cnt'];
答案 1 :(得分:1)
传递给count函数的参数可以是任何东西,因为您只需要行数,而不是它们的数据。
SELECT COUNT(1) FROM timestamps_sessions WHERE finished IS NOT NULL;
答案 2 :(得分:0)
您缺少代码mysql_fetch_array
才能获取第一条记录
$sql = "SELECT COUNT(finished) totals FROM timestamps_sessions";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$total = $row['totals'];
答案 3 :(得分:0)
uploads
为count提供一个别名,例如count_finished。然后,您需要从结果对象中获取行。该行中包含您的数据。