当使用PDO准备的语句时,如何在使用limit时获得行总数


How to get total amount of rows while using limit when using PDO prepared statements?

我发现了一些类似的,但不是我需要的:

  • 做工作但不使用PDO
  • 使用PDO但不使用LIMIT

背景信息:我正在使用带有PDO类的MySQL

目前,我正在使用以下两个查询:

获取一页数据

$sql = "SELECT * FROM `tab`
WHERE `condition` = :condition 
LIMIT $page_size OFFSET $offset";
$array = array('condition'=>$condition);
$mysql = $pdo->prepare($sql);
$mysql->execute($array);

要获取行总数:

$sql = "SELECT COUNT(*) FROM `tab`
WHERE `condition` = :condition";
$array = array('condition'=>$condition);
$mysql = $pdo->prepare($sql);
$mysql->execute($array);

您可以使用SQL_CALC_FOUND_ROWS命令告诉MySQL返回匹配记录的总数

$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM `tab`
WHERE `condition` = :condition 
LIMIT $page_size OFFSET $offset";

要获得找到的总行数,可以运行此查询

SELECT FOUND_ROWS()

但是,执行两个单独的查询通常比使用SQL_CALC_FOUND_ROWS更快。以下是解释的基准

你可以在这里阅读更多关于的信息