2012-01-16 48 views
0

我試圖用限制
它的更新表罰款更新thable與選擇當我們進入「限制」只與在選擇查詢中的一個參數,像(limit 50)選擇限制和更新表。限制不能正常工作。 SQL

但是,當選擇了「限制」像(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

這是預期

當您更新基於您的第一次迭代行1-50,設置underprocess = 1。這些在第二個呼叫忽略,因爲要求行underprocess = 0。在第一查詢

所以行51-100現在是你的第二個查詢行1-50如果你喜歡。

,因爲你總是希望「第一次」 50

注意

,因爲你沒有ORDER BY你的極限,無論如何都不會保證你不需要改變你的極限範圍。

+0

謝謝親愛的,現在我明白邏輯 – 2012-01-16 11:39:22