我正在尝试使用选择使用限制来更新
当我们仅在(limit 50)
但是当选择像“limit $sqlFrom, $sqlTo
这样的”限制“时,它会更新表但跳过第2(51到100)条记录并再次从101开始更新。
它跳过每第2个50条记录
问题出在哪里???
这是代码
$sqlFrom = 0;
$sqlTo = 50;
for($try = 0; $try < 6; $try++)
{
$res = mysql_query("select * from table_name where underprocess = 0 limit " . $sqlFrom . "," . $sqlTo);
while($row = mysql_fetch_array($res))
{
$id = $row['id'];
mysql_query("update table_name set underprocess = 1 where id = " . $id) or die('error');
echo $id;
}
print '<hr/>';
if($sqlFrom != 0)
{
$sqlFrom += $sqlTo;
}
else
{
$sqlFrom = $sqlTo;
}
}//for
答案 0 :(得分:0)
这是预期的
根据第一次迭代更新第1-50行时,设置underprocess = 1
。这些在第二次调用中被忽略,因为要求行underprocess = 0
。
因此,如果您愿意,第一个查询中的第51-100行现在是第二个查询的第1-50行。
您无需更改LIMIT范围,因为您始终需要“第一个”50。
注意
无论如何都不保证您的LIMIT,因为您没有ORDER BY。