여기에서 잘못하고있는 일을 두뇌로 감싸려고합니다. 이것은 레코드를 삭제할 때 호출되는 함수입니다. 레코드가 삭제되었지만 삭제 레코드가 행 중간에있는 경우 display_order 자체를 다시 설정해야합니다. 첫 번째 레코드는 항상while 루프의 모든 행을 업데이트하십시오.
가<?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;
}
?>
I 받고있어 오류가 모든 레코드는 "display_order"지금 최대 레코드 수에 업데이트된다는 것입니다
는 등의 말을 1, 2, 항상 둘째,되도록 예를 들어 4 개의 레코드가 있었지만 그 중 하나를 삭제했습니다. 나머지 모든 레코드의 디스플레이 순서는 3입니다.
첫 번째 $ id = (int) $ _GET [ 'id']; SQL 주입을 피하십시오. – epicdev
'yourPage.php? id = % 27 % 20OR % 20 % 271 % 27 % 3D % 271'을로드하면'pages' 테이블의 모든 행이 삭제됩니다. http://bobby-tables.com/, ['mysqli :: prepare()'] (http://php.net/manual/en/mysqli.prepare.php) – DaveRandom