SQL / PHP noob。我已经查了很多问题,但似乎没有人能帮我找到我需要的东西。
我有一个数据库的前端,它根据复选框的状态运行SQL查询。我希望SQL查询使用单个查询返回结果和结果计数(到变量中)。
如果我跑:
SELECT DISTINCT
event.event_id as 'Event ID',
event.event_group_id as 'Group ID',
abs_path.abs_path as 'Path\Filename',
FROM
event.event_group
LEFT JOIN event.event using (event_group_id)
LEFT JOIN file_info.abs_path using (abs_path_id)
WHERE event.timestamp >= DATE_SUB(CURDATE(),INTERVAL 1 DAY)
LIMIT 40
我得到了查询的所有结果。但如果我跑:
SELECT DISTINCT
count(event.event_id) as 'rowcount',
event.event_id as 'Event ID',
event.event_group_id as 'Group ID',
abs_path.abs_path as 'Path\Filename',
FROM
event.event_group
LEFT JOIN event.event using (event_group_id)
LEFT JOIN file_info.abs_path using (abs_path_id)
WHERE event.timestamp >= DATE_SUB(CURDATE(),INTERVAL 1 DAY)
LIMIT 40
我只使用' rowcount'作为第一列,但如果我把它拿出来,我会得到所有结果:
我希望能够获得总行数并将其保存到变量中,同时还会将结果拉下来显示在屏幕上。
我使用以下内容获取查询:
$result = $database->query($sql);
如何在将总结果保存到$ rowcount的同时进行查询和计数?如果查看第二个图像的左下角,SQL查询浏览器将显示查询中的总数。我想要那个号码。我怎么能得到它?
由于
答案 0 :(得分:0)
您可以获得行数并导致PHP。
执行查询后,您将获得结果,让我们说$res
。
您可以使用它来获取行数。 如果使用mysqli库使用
mysqli_num_rows ( $res );
如果您使用的是PDO,则必须运行2个查询以获取值,其他查询将获取计数。
答案 1 :(得分:0)
这只是sql的解决方案,可能不是更好的解决方案,但试试吧;)
SELECT DISTINCT
event.event_id as 'Event ID',
event.event_group_id as 'Group ID',
abs_path.abs_path as 'Path\Filename',
@cnt:=@cnt + 1 as cnt
FROM
event.event_group
LEFT JOIN event.event using (event_group_id)
LEFT JOIN file_info.abs_path using (abs_path_id),
(SELECT @cnt:=0) var
WHERE event.timestamp >= DATE_SUB(CURDATE(),INTERVAL 1 DAY)
LIMIT 40
您可以按最后一条记录的cnt
计算查询结果。
答案 2 :(得分:0)
使用COUNT
功能时,您的查询会自动分组
尝试使用$rowcount = $result->fetchColumn();
,而不是COUNT
在SQL中。