使用 PDO 准备语句时如何在使用限制时获取总行数?
How to get total amount of rows while using limit when using PDO prepared statements?
我找到了一些类似的,但不是我需要的那个:
- Do the work but not using PDO
- Using PDO but not using LIMIT
背景资料:
我正在使用 MySQL 和 PDO class
目前,我正在使用如下两个查询:
获取一页数据:
$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到return匹配记录的总数
$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
我找到了一些类似的,但不是我需要的那个:
- Do the work but not using PDO
- Using PDO but not using LIMIT
背景资料: 我正在使用 MySQL 和 PDO class
目前,我正在使用如下两个查询:
获取一页数据:
$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到return匹配记录的总数
$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