PHP / SQL - 返回查询结果和计数

时间:2016-05-19 08:27:17

标签: php mysql

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'作为第一列,但如果我把它拿出来,我会得到所有结果:

sql

我希望能够获得总行数并将其保存到变量中,同时还会将结果拉下来显示在屏幕上。

我使用以下内容获取查询:

$result = $database->query($sql);

如何在将总结果保存到$ rowcount的同时进行查询和计数?如果查看第二个图像的左下角,SQL查询浏览器将显示查询中的总数。我想要那个号码。我怎么能得到它?

由于

3 个答案:

答案 0 :(得分:0)

您可以获得行数并导致PHP。 执行查询后,您将获得结果,让我们说$res

您可以使用它来获取行数。 如果使用mysqli库使用

mysqli_num_rows ( $res );

如果您使用的是PDO,则必须运行2个查询以获取值,其他查询将获取计数。

MySQLi

PDO

答案 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中。