Как получить общее количество найденных строк без учета ограничения в PDO? - PullRequest
11 голосов
/ 04 января 2011

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

Я использую 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 Ответ

17 голосов
/ 04 января 2011

Только для 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...