嗨,我有这种情况:
$query = $db->query('SELECT COUNT(*),* FROM memberFileReports');
$data = $query->fetch(PDO::FETCH_ASSOC);
print_r($data);
它无法正常工作?任何想法为什么以及如何同时计算和获取所有项目,如果我想计数(*)然后下一步选择将有限制0,5?
答案 0 :(得分:2)
使用此
SELECT * , COUNT(*) FROM memberFileReports Group by column_id
而不是这个
SELECT COUNT(*),* FROM memberFileReports
修改强>
试试这个
$data = $query->fetchAll();
而不是
$data = $query->fetch(PDO::FETCH_ASSOC);
答案 1 :(得分:2)
这是你要找的吗?
SELECT * , CONCAT('', (SELECT COUNT(*) FROM memberFileReports)) AS total
FROM memberFileReports LIMIT 0,5
编辑1:请注意,'total'将是一个字符串
编辑2:据我所知,你想得到表中的总行数,但只选择其中的5行(例如)
编辑3:大写......和拼写错误
答案 2 :(得分:0)
我知道这篇文章有点晚了但我想我会告诉你,你只得到一行的原因是因为你使用的是聚合函数“COUNT()”。该函数使得结果返回一行。在多行中显示内容的方法是在select语句中使用“GROUP BY”,它将按照您告诉它的条件对数据进行分组。
示例...假设我们有一个包含3个用户的示例表..
一个人有10次互动
一个3
和一个33:
SELECT
e.UserID,
COUNT(e.interactions) as num_interactions
FROM example e
GROUP BY e.UserID;
将显示用户在虚拟示例表中进行的交互次数。
输出:
UserID num_interactions
1 3
2 10
3 33
没有GROUP BY聚合会使输出看起来像这样:
UserID num_interactions
1 46
仅供将来参考:)