php pdo递减高于已删除值的值

php pdo递减高于已删除值的值,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,你好,我在这个问题上有点纠结,谁能帮我一把吗。我有一个表,其中有一列,列的位置与他们进行排序,我试图做的是,当删除按钮被点击为一行,其中一行的位置值高于一个被删除,得到递减。就这样 // 1 // 2 //now we delete this // 3 // 4 // and this get's updated with this // 1 // 2 // 3 <?php require_once('connect.php');

你好,我在这个问题上有点纠结,谁能帮我一把吗。我有一个表,其中有一列,列的位置与他们进行排序,我试图做的是,当删除按钮被点击为一行,其中一行的位置值高于一个被删除,得到递减。就这样

 //   1
 //   2 //now we delete this 
 //   3
 //   4
 //   and this get's updated with this
 //    1
 //    2
 //    3

<?php 
require_once('connect.php');
$name = get_option('selectedSlide');
$position = get_option('selectedSlideId'); 
    try{
        global $db;
        if(!get_option('selectedSlide')){
        $error.="No slide selected.";
        echo $error; die;
        }
        else{
        $inserts = $db->prepare("DELETE FROM slider_images WHERE slider_image_name = :names");
        $inserts->bindParam(':names', $name);
        $inserts->execute();
        $incrementAllBehindDeleted = $db->prepare("SELECT slider_image_position FROM slider_images WHERE slider_image_position>:position");
        $incrementAllBehindDeleted->bindParam(':position', $position);
        $incrementAllBehindDeleted->execute();
        die;
        }
    }
    catch(Exception $e){
        echo $e->getMessage();
        exit;
    }
?>
//1
//2//现在我们删除此项
//   3
//   4
//并且这个得到了更新
//    1
//    2
//    3

总的来说,我同意Niet the Dark Absol的评论,只要数字顺序正确,就不必担心差距

但是,如果您坚持这样做,那么我只需在不选择的情况下进行更新,以减少后续图像的位置:

UPDATE slider_images SET slider_image_position=slider_image_position-1 WHERE slider_image_position>:position

但是,如果您有多个图像滑块,则必须在更新的
where
子句中包含图像滑块的标识符,以重新排序哪些图像。

请考虑是否需要这样做。如果您的值仅用于排序顺序,那么是否存在间隙应该无关紧要。事实上,间隙将是一件好事,因为它允许您插入新值(10、20、30…并且您希望插入10到20之间的值,您可以添加值15)。如果你的系统仅仅因为你的数字中有一个间隙而中断,这表明你正在重载该字段,应该对其进行简化。不可能有任何间隙,因为在我的其他函数中,这些值是通过增加所选值和减少其位置来切换的,如果有间隙,它就会中断。