0

約20行を変更する必要がある方法があります。一部の行の順序を保存するために、「14-33-61-10 ...」のような文字列を ajax ごとに渡します。これが私の実際の(動作する)コードです:

$explode = explode('--',$_POST['data']); // -> array('0'=>'8', '1'=>'4', '2'=> ... )
$i = 1;
foreach( $explode as $task ) {
    if( !is_int($task) ) continue;
    $exec = $project->exec("UPDATE tasks SET pos=$i WHERE rowid=". $task );
    $i++;
}

私の問題は、約1秒かかることです。私の質問: 1 つのクエリだけで複数の行を編集する方法はありますか?

4

3 に答える 3

3

もちろん、次のような SQL 文字列を送信します。

update  tasks 
set     pos =
        case rowid
        when 13 then 1
        when 33 then 2
        when 61 then 3
        when 10 then 4
        end
where   rowid in (13,33,61,10)

13-33-61-10からへの変換(13,33,61,10) は、PHP で行うのが最適です。

于 2013-08-06T09:31:42.953 に答える