使用PDO预处理语句时如何在使用限制时获取总行数?

时间:2015-07-05 23:27:28

标签: php mysql pdo limit

我找到了一些类似的,但不是我需要的那个:

背景资料:  我正在使用MySQL与PDO类

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

获取一页数据

$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);

1 个答案:

答案 0 :(得分:2)

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

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

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

SELECT FOUND_ROWS()

但是,执行2个单独的查询通常比使用SQL_CALC_FOUND_ROWS更快。这是benchmark to explain

you can read more about this here