Как получить общие найденные строки без учета предела в PDO?

Мне показалось очень непрофессиональным сделать вторичный запрос, чтобы проверить больше результатов, чтобы отобразить кнопку больше.

Я использую PDO, есть ли способ получить итоговые найденные строки без фильтра пределов, но все же фильтровать результаты?

Текущий код:

// Show Results

$start = 0

$r=$db->prepare("SELECT * FROM locations WHERE area=:area LIMIT $start,10");
$r->execute($fields);

// See if there is more results

$r=$db->prepare("SELECT * FROM locations WHERE area=:area");
$r->execute($fields);

$offset=$start+10;
if($r->rowCount() > $offset){
echo "<div class='load'>Load More</div>";
}

Ответ 1

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

Примерно так же, как сервер баз данных, как запрос на одно время для всех записей, конечно. Для использования, отличного от MySQL, этот запрос, конечно, лучше, чем получение номера строки всех записей:

$r=$db->prepare("SELECT COUNT(*) FROM locations WHERE area=:area");
$r->execute($fields);
$count = $r->fetch(PDO::FETCH_COLUMN);
echo $count;