循环查询结果,并在每100条重叠

时间:2016-06-03 08:07:12

标签: php mysql

$ result 包含非特定数量的记录。

我需要遍历$ result,并在每100条记录之后执行某些操作,然后继续循环,但包含前一循环中的5条记录(重叠)。

像这样:

  1. 获取记录0-100
  2. 使用这些记录执行某些操作
  3. 获取记录95-195
  4. 使用这些记录执行某些操作
  5. 获取记录190-290
  6. 有人建议如何以最有效的方式完成这项工作吗?

2 个答案:

答案 0 :(得分:2)

首先,我同意评论员的观点。我们在这里帮助您解决您遇到的问题,但不是为了编写您的脚本。

Neverthelesse我写了一个你的问题的结果解决方案:

$results; #your results

for($i = 0; $i <= @{$results}, $i++){ #loop through all results
    my @tempList;
    push(@tempList, @{$results}[$i]); #push every result in a temporary list
    if (@{$results} == 100 || $i == @{$results}) { #do sth, if the tempList hast 100 entries or you're at the last round of your loop
        #do sth with the 100 records
        $i -= 5; #decrement i to get the 5 entries overlap

    }
}

您可以看到这是一个简单的循环结果。每100周,if将评估为真,您可以使用您的数据。 通过每100周减少计数器来实现重叠。完成循环后,在最后一轮中小心!如果你没有在最后一轮逃脱$i -= 5;,你将获得一个无限循环!

答案 1 :(得分:1)

    $slimit=0;
    $flimit=100;

    while($flimit<=total_records_in_your_table)
    {
        $q="select * from table_name limit $slimit,$flimit";

        while($data=mysql_fetch_row($q))
        {
            //opration
        }

        $slimit=$flimit-6;
        $flimit=$flimit+$slimit;

}