2012-01-16 16 views
0

私はそれが我々が(limit 50)制限および更新テーブルで選択します。制限はありません。 SQL

ように選択クエリに一つだけのパラメータで「リミット」と入力します。しかしとき(limit $sqlFrom, $sqlTo)のような「制限」と選択したときには、更新テーブルの罰金だ限度
を使用して選択してthable更新しようとしていますテーブルを更新しますが、第二(51〜100)レコードをスキップして、もう一度それは、すべての第二50のレコード

問題があるのスキップ101

から更新を開始?ここで

コード

$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を要求するため、2番目の呼び出しでは無視されます。

したがって、最初のクエリの行51〜100は、2番目のクエリの行1〜50になります。

あなたはいつもあなたがノーORDERを持っていないので、「最初の」50

NOTE

があなたのLIMITがとにかく保証するものではありませんしたいので、あなたが制限範囲を変更する必要はありません。

+0

おかげさまで、私は論理を理解しています –

関連する問題