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语句,但也可以在一个查询中完成:

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

在新代码中使用PDOormysqli代替ext/mysql

于 2013-08-30T20:05:28.543 回答