I am trying to update thable with select using limit
It’s update table fine when we enter “limit” only with one parameter in select query like (limit 50)
But when select with “limit” like (limit $sqlFrom, $sqlTo) it updates the table but skip 2nd (51 to 100) records and again start updating from 101.
It skip every 2nd 50 records
Where is the problem???
Here is the code
$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
This is as expected
When you update rows 1-50 based on your first iteration, you set
underprocess = 1. These are ignored in the 2nd call because ask for rowsunderprocess = 0.So rows 51-100 in the 1st query are now rows 1-50 for your 2nd query if you like.
You don’t need to change your LIMIT range because you always want the “first” 50.
NOTE
Your LIMIT isn’t guaranteed anyway because you have no ORDER BY.