我最近发现自己需要分页,因此我挖出了已达到其目的的旧mysql_query脚本。我尝试重做它,使其适合我当前的MySQL PDO类,但有一点不对。

问题是要查明查询将产生多少页,我需要首先进行整个查询而没有LIMIT'ation,而不是我必须再次执行相同的查询才能限制它,这就像浪费资源和时间,这些查询确实很长,需要大约20个不同的过滤器来执行,所以我认为我一定做错了。

有没有一种方法可以使用PDO在将LIMIT应用于行的同时检查总共有多少行?

现在这就是我要做的:

exec,即此查询:

SELECT * FROM inventory WHERE
    season = ?,
    category = ?,
    code = ?,
    storage = ?,
    price > ?,
    price < ?,
    purchase_date > ?,
    purchase_date < ?,
    index_date > ?,
    index_date < ?,
    product_class = ?


然后我可以访问受影响的行,因此我可以再次执行它并追加LIMIT:

SELECT * FROM inventory WHERE
    season = ?,
    category = ?,
    code = ?,
    storage = ?,
    price > ?,
    price < ?,
    purchase_date > ?,
    purchase_date < ?,
    index_date > ?,
    index_date < ?,
    product_class = ?
    LIMIT {$BEGIN}, {$END}


预先感谢您的所有帮助:)

最佳答案

为什么不将所有查询的结果都存储到数组中,然后只打印10个,然后打印[11-20]。 (10是显示的任意数量的结果)

就像是

 for($i = ($page - 1) * 10; $i <= ($page * 10); i++)
{
  echo $result[i]['season'];
  // other things
}

关于php - MySQL PDO限制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24887265/

10-12 12:50
查看更多