嘿,我有一个包含“id”、“name”和“weight”列的表。权重是一个无符号的小整数。
我有一个页面显示按“重量 ASC”排序的项目。它将使用拖放操作,一旦更改顺序,将传递一个以逗号分隔的 ID 字符串(以新顺序)。
假设该表中有 10 个项目。这是我到目前为止所拥有的:
示例输入:
5,6,2,9,10,4,8,1,3,7
示例 PHP 处理程序(不包括错误处理程序和安全性内容):
<?php
$weight = 0;
$id_array = explode(',', $id_string);
foreach ($id_array as $key => $val)
{
mysql_query("UPDATE tbl SET weight = '$weight' where id = '$val' LIMIT 1");
$weight++;
}
?>
当我更改列顺序时,我的脚本是否需要进行 10 个单独的 UPDATE 查询,还是有更好的方法?
最佳答案
您可以创建一个包含新数据的临时表(即,id 和 weight 是列),然后用这些数据更新表。
create temporary table t (id int, weight float);
insert into t(id, weight) values (1, 1.0), (2, 27), etc
update tbl inner join t on t.id = tbl.id
set tbl.weight = t.weight;
因此,您有一个创建语句、一个插入语句和一个更新语句。
关于php - (Mysql - 批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1429441/