如何在不考虑PDO限制的情况下获取总共找到的行?

Rya*_*yan 11 php mysql 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>";
}
Run Code Online (Sandbox Code Playgroud)

Wri*_*ken 16

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));
Run Code Online (Sandbox Code Playgroud)

当然,对于数据库服务器来说,只需要查询所有记录的一次.对于非MySQL使用,此查询当然比获取所有记录的rowcount更好:

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