Мне было очень непрофессионально делать вторичный запрос, чтобы проверить больше результатов, чтобы отобразить кнопку загрузки больше .
Я использую 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>"; }
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;