【发布时间】:2019-06-20 02:47:13
【问题描述】:
我有一个数据库表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 列的行数,而不传递实际数据以保留带宽。我只需要整数。
【问题讨论】:
-
什么是
$conn? -
在 SELECT 子句中使用类似
total的别名并访问第一行的['total']元素。 -
如果
$conn是 PDO 对象,请参阅 stackoverflow.com/questions/883365/row-count-with-pdo -
@MartinHeralecký 这是一个 MySQLi 对象,从问题中提供的对象中的属性可以看出 -
num_rows是 MySQLi 结果属性。
标签: php mysql select mysqli count