0

ID と並べ替えを含むテーブルがあり、この更新プログラムを作成する必要があります

mysql_query("
UPDATE `steps` SET sort = '2' WHERE id = '9' ;
UPDATE `steps` SET sort = '1' WHERE id = '5' ;
UPDATE `steps` SET sort = '3' WHERE id = '6' ;
UPDATE `steps` SET sort = '4' WHERE id = '4' ;
UPDATE `steps` SET sort = '5' WHERE id = '2' ;
UPDATE `steps` SET sort = '6' WHERE id = '1' ;
UPDATE `steps` SET sort = '7' WHERE id = '8' ;
");

このようなものは間違っています

mysql_query("UPDATE `steps` SET sort = '2' WHERE id = '9' , sort = '1' WHERE id = '5' , sort = '3' WHERE id = '6' ;");

どのように縮小できますか?アイデアはありますか?

4

1 に答える 1

3

mysql_query単一の文字列で複数のクエリを実行することはサポートされていません。MySQL を通じてこれをサポートしていmysqli_multi_queryますが、個人的にはこれはアンチパターンだと思います。私の知る限り、PDO はサポートしていません。

できることは複数のmysql_queryステートメントを使用することですが、1 つのクエリで実行することもできます。

UPDATE steps SET sort = CASE
    WHEN id = 9 THEN 2
    WHEN id = 5 THEN 1
    ELSE sort
END CASE

の代わりに新しいコードでPDOorを使用しますmysqliext/mysql

于 2013-08-30T20:05:28.543 に答える