我发现这是非常不专业的,进行二次查询以检查更多的结果,以显示一个加载更多的按钮.
我正在使用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;