从php中的SQL结果集中选择第n条记录

时间:2011-05-13 07:30:52

标签: php mysql

我运行查询并获得结果集。我需要从这个结果集中获取第n条记录。我有什么想法可以做到这一点吗?

我无法直接从数据库中选择第n条记录因为我需要对其进行过滤,并且不知道结果集中有多少条记录。所以我无法确定将哪个数字传递给mysql_result方法,即

  1. 根据某些条件,从表中获取几行
  2. 从这些行中选择第n行(数字n不固定。取决于返回的记录数)
  3. 基本思路是根据设定条件获取所有结果,并从中获取随机结果。

    有什么想法吗?感谢。

2 个答案:

答案 0 :(得分:0)

你的问题似乎不清楚。不过这是一个猜测:

您想要选择中间的记录:

$count = mysql_num_rows($result);
$middle_name = mysql_result($result, intval($count/2), 'name');

除此之外,如果你的记录真的少了,你也可以这样做:

$rs = array();
while ($row = mysql_fetch_assoc($result)){
     $rs[] = $row;
}

然后您可以使用$rs[N-1]来达到第N条记录。

如果您只获取一条记录,请从PHP手册中阅读mysql_data_seek

答案 1 :(得分:0)

  

基本思想是根据设定的条件获得所有结果,并从中获得随机结果。

SELECT ... ORDER BY RAND() LIMIT 1

我知道这不是最佳做法,但由于给定的信息相当稀疏,这可能是进一步阅读的起点。说实话,在一个足够小的应用程序中,这通常是最简单的解决方案。