嘿,我有一个带有"id","name"和"weight"列的表.权重是无符号的小int.
我有一个页面显示按"重量ASC"排序的项目.它将使用drag-n-drop,一旦订单被更改,将传递逗号分隔的id字符串(按新顺序).
假设该表中有10个项目.这是我到目前为止所拥有的:
样本输入:
5,6,2,9,10,4,8,1,3,7
Run Code Online (Sandbox Code Playgroud)
示例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++;
}
?>
Run Code Online (Sandbox Code Playgroud)
当我对列顺序进行更改时,我的脚本是否需要进行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;
Run Code Online (Sandbox Code Playgroud)
因此,您有一个create语句,一个insert语句和一个update语句.
| 归档时间: |
|
| 查看次数: |
5043 次 |
| 最近记录: |