MySQLのみAFAIK:
$r=$db->prepare("SELECT SQL_CALC_FOUND_ROWS * FROM locations WHERE area=:area LIMIT $start,10");
$r->execute($fields);
var_dump($r->fetchAll());
var_dump($db->query('SELECT FOUND_ROWS();')->fetch(PDO::FETCH_COLUMN));
もちろん、データベースサーバーにとっては、すべてのレコードを1回クエリするのと同じくらい重いです。 MySQL以外で使用する場合は、もちろん、このクエリの方が allの行数を取得するよりも優れています。 記録:
$r=$db->prepare("SELECT COUNT(*) FROM locations WHERE area=:area");
$r->execute($fields);
$count = $r->fetch(PDO::FETCH_COLUMN);
echo $count;