我试图将我的大脑包裹在我在这里做错的事情上。这是我想要删除记录时调用的函数。记录被删除,但如果删除的记录位于行中间的某个位置,我希望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。
答案 0 :(得分: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
表中的所有记录都将被更新。