0

我正试图将我的大脑包裹在我在这里做错的事情上。这是我想删除记录时调用的函数。记录被删除,但如果要删除的记录位于行中间的某个位置,我希望 display_order 重新建立自身。所以第一个记录总是1,第二个总是2,等等。

<?php
    $counter = 1;
    require ("connection.php");
    $sql = "SELECT * FROM pages";
    $result = $conn->query($sql) or die(mysqli_error());

    $id = $_GET['id'];
    $delete = mysqli_query($conn, "DELETE FROM pages WHERE id ='".$id."'");
    if ($delete){

        while($row = $result->fetch_object()){
            $reord = "UPDATE pages SET display_order = '".$counter."'";
            $result2 = $conn->query($reord) or die(mysqli_error());
            $counter++;
        }

        header("Location: admin.php");
    }else{
        echo "NOTHING DELETED id=".$id;
    }
?>

我收到的错误是所有记录“display_order”现在都更新为最大记录数,例如,我有四条记录,我删除了其中一条,现在所有剩余记录的 display_order 都为 3。

4

1 回答 1

2

您错过了将页面 ID 作为 WHERE 条件添加到查询中。像这样:

while($row = $result->fetch_object()){
    $reord = "UPDATE pages SET display_order = '".$counter."' WHERE page_id = '" . $row->page_id . "'";
    $result2 = $conn->query($reord) or die(mysqli_error());
    $counter++;
}

注意:如果缺少 WHERE 子句,pages表中的所有记录都将被更新。

于 2013-04-08T17:06:51.297 回答