好吧,我可能过分强调我自己的MySQL技能,但这是我的问题:我有一个表格,我存储产品的类别给他们一个排序顺序在sort
列
-----------------------
| category | sort |
|---------------------|
| category3 | 1 |
| category1 | 2 |
| category2 | 3 |
-----------------------
当我显示类别时,我会显示它们ORDER BY sort ASC
。现在我想给管理员更改排序顺序的可能性,我要做的就是提取与排序编号关联的类别并在PHP中使用它们,将+1
添加到位置后面的数字管理员希望放置类别并向db发送多个查询,以更新所有sort
值。
(即如果管理员想要在位置n.1处的category2,我将提取*排序值,从1-2添加+1,排除3)
因为我认为这是效率最低的方法,我想知道是否可以使用MySQL查询完成所有操作。出于这个原因,我想到了这样的事情
$sql = 'CREATE PROCEDURE rowperrow()
BEGIN
SET @position = '.$newCatPosition.'
DECLARE rowNum INT DEFAULT 0
DECLARE i INT DEFAULT 0
SELECT COUNT(*) FROM productsareas INTO rowNum
SET i=0
WHILE i<rowNum DO
SELECT @sortNum = sort FROM productsareas
IF @sortNum>@position-1 THEN
UPDATE productsareas SET sort=@sortNum +1
END IF
SET i=i+1
END WHILE
END';
如果排序编号为> $newCatPosition-1
(这是管理员想要将类别设置为-1的对应编号,则该查询应检查每行的行数,因为同样的编号必须为增加+1以将空格留给新类别):如果为真,则替换增加+1
的排序编号。
说我尝试过这个查询并没有用,但我想要获得的结果与我写的相似
是没用的