选择“以10为一组的查询”

时间:2015-10-03 12:34:47

标签: php mysql mysqli

我在这里关注了一个链接,并相应地修改了我的代码。我想要实现的是例如一个表名media_ids包含45行(这是dyanamic),我想在最少10行的组中划分行数(在我的情况下,四组10行和1组) 5)并每小时执行每组的代码。

例如,从id 1到10的select记录,然后从11到20的第二个小时,依此类推,除非取出最后一个记录并从id 1重新开始。

我添加了一个跟踪器,检查当前的限制并继续。但是它给了我想要达到的结果。

<?php
require('inc/dbConnect.php');

$lastPointerq = "select tracker from media_tracker";
$lastPointerResult = mysqli_query($con, $lastPointerq);
$lastPointerRes = mysqli_fetch_row($lastPointerResult);
$lastPointer = $lastPointerRes[0];
$lastPointer10=$lastPointer+10;

$currentMediaQuery = "select * from media_ids where id > ".$lastPointer." limit ".$lastPointer.",".$lastPointer10."";

$mediaQuery = mysqli_query($con, $currentMediaQuery);

if (mysqli_num_rows($mediaQuery) > 0) {
    while ($row = mysqli_fetch_assoc($mediaQuery)) {
       // do stuff…
      echo $id=$row['id']."<br>";
    }
}

else
{echo "0";}

if ($lastPointer + 10 > 40) {
    $lastPointer = 1;
} else {
    $lastPointer += 10;
}

mysqli_query($con, "update media_tracker set tracker = $lastPointer");
?>

1 个答案:

答案 0 :(得分:0)

我假设您每小时通过ajax / Js调用此脚本... 在您的代码中,如果您从其他脚本中删除某些数据,您可能会发现您的第一行ID,即100!

require('inc/dbConnect.php');

$limit = 10 ;
$lastPointerq = "select tracker from media_tracker";
$lastPointerResult = mysqli_query($con, $lastPointerq);
$lastPointerRes = mysqli_fetch_row($lastPointerResult);
$lastPointer = $lastPointerRes[0];

$lastPointerRes = mysqli_fetch_assoc($lastPointerResult);
$lastPointer = empty($lastPointerRes['tracker']) ?  0 : $lastPointerRes['tracker'] ;

$lastPointer10=$lastPointer* $limit;

$currentMediaQuery = "select * from media_ids  limit ".$limit." OFFSET  ".$lastPointer10."";

$mediaQuery = mysqli_query($con, $currentMediaQuery);

if (mysqli_num_rows($mediaQuery) > 0) {
    while ($row = mysqli_fetch_assoc($mediaQuery)) {
       // do stuff…
      echo $id=$row['id']."<br>";
    }
}

else
{echo "0";}

//do a total row count query here and set  as value of $total rather than 40
$total =40 ;
$flag = ceil($total/$limit);

if ($lastPointer == $flag) {
    $lastPointer = 0;
} else {
    $lastPointer ++;
}

mysqli_query($con, "update media_tracker set tracker = $lastPointer");