我发现进行辅助查询来检查更多结果以显示 更多加载 按钮是非常不专业的。
我正在使用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;