语法或逻辑错误
问题描述:
我与IDS语法或逻辑错误
1,2,3,4,5,6
列表和本人拖放使得5(个体)之间进1和2(下一个) 1,5,2,3,4,6
所以我需要5 tobe 2(next)-1 and everything < 2(next) - > id = id-1 and everything > 5(self) - > id = id-1
所以我写了sql
$sql = "UPDATE w3school SET id= CASE
WHEN ".$self." > ".$next." THEN id-1
END
WHERE id < ".$next." AND id > ".$self.";";
$sql .="UPDATE w3school SET id= ".$next." - 1 WHERE id = ".$self."";
我得到:所以它只是将5更改为0;
的问题是使用的和WHERE语句 不知道有什么不对劲的地方,但seperately的staments共同努力不是
答
这是我们想要的查询:
update w3school
set id = case
when id = 5 then 2 -- change position
when 5 > 2 then i + 1 -- if we move "this" left, then all ids go one place to the right
else id - 1 -- and vice versa
end
where (id >= 2 or id >= 5) -- lower ids than the two in question are irrelevant here
and 2 <> 5; -- if self = next nothing needs be done
作为一个字符串:
$sql =
" update w3school ".
" set id = case ".
" when id = ".$self." then ".$next." ".
" when ".$self." > ".$next." then i + 1 ".
" else id - 1 ".
" end ".
"where (id >= ".$next." or id >= ".$self.") and ".$next." <> ".$self.";";
答
的SQL的方式将是:
$sql = "UPDATE w3school SET id= 1000 WHERE id = ".$self.";";
$sql .= "UPDATE w3school SET id= id + 1 WHERE id < ".$self." AND id >= ".$next.";";
$sql .= "UPDATE w3school SET id= ".$next." WHERE id = 1000";
我很确定@Thorsten凯特纳也是对的。但是,我对他的风格很陌生,这很可能是正常的风格,所以他的回答对我来说很难实现.1000有点草率,但逻辑和语法是问题并得到了回答。 1000可以很容易地改变。
您绝不应该首先更改ID。 –
和数据库的位置如何改变,然后由html元素实现? – Julian
id字段的属性是什么?它应该是独一无二的吗? –