-
(기능추가 4-7) 업로드된 사진 삭제하기프로젝트/프로젝트_사진첩 2023. 11. 26. 18:35
삭제버튼을 누르면
image테이블에서의 id값에 해당하는 행과
comment테이블에서 해당하는 image_id행들을 모두 제거해야함
image.id = comment.image_idprocess_image_delete.php
<?php$conn=mysqli_connect("localhost:81","root","password","project_memories");
settype($_POST['id'], "integer");$filtered = array('id'=>mysqli_real_escape_string($conn, $_POST['id']),'page_id'=>mysqli_real_escape_string($conn, $_POST['page_id']));$sql = "DELETE FROM comment WHERE image_id = {$filtered['page_id']}";$result = mysqli_query($conn, $sql);if($result == false){echo "삭제하는 과정에서 문제가 생겼읍니다.";error_log(mysqli_error($conn));} else { //성공시 수행할 그다음 동작$sql2 = "DELETE FROM image WHERE id = {$filtered['page_id']}";$result2 = mysqli_query($conn, $sql2);if($result2 == false){echo "삭제하는 과정에서 문제가 생겼읍니다.";error_log(mysqli_error($conn));} else {header("Location: index230906.php");}}image_display.php
<?php$conn = mysqli_connect("localhost:81", "root", "password", "project_memories");$image_display = '';$formatted_date = '';$comment_list = '';if (isset($_GET['id'])) {$filtered_id = mysqli_real_escape_string($conn, $_GET['id']);$sql = "SELECT * FROM image LEFT JOIN who ON image.who_id=who.id WHERE image.id={$filtered_id}";$result = mysqli_query($conn, $sql);$row = mysqli_fetch_array($result);$article = array('created' => htmlspecialchars($row['created']),'image' => $row['image'],'creater' => htmlspecialchars($row['creater']));$delete_image = '<form class="delete_image" action="process_image_delete.php" method="POST" onsubmit="if(!confirm(\'정말 삭제하시겠습니까?\')) {return false;}"><input type="hidden" name="page_id" value="' . $_GET['id'] . '"><input id="delete_image" type="submit" value="X"></form>';$image_display =$delete_image.'<img class="displayImage" src="data:image;base64,' . base64_encode($article['image']) . '"alt="Image" style="width: 100%; height: 100%;">';$formatted_date = date("y년 m월 d일", strtotime($article['created']));1.php에 대해 오랜만에 복습함..
2.두개의 테이블에 해당하는 row를 연속으로 지우는 법
=> if else문을 이용해서 하나의 테이블에서 작업을 먼저 수행한 후 그다음 수행할 코드를 else문 안에 넣기
3.데이터 무결성을 위한 데이터베이스 삭제 순서 ( 다(comment) => 1(image) 순서로 sql문 실행)
데이터베이스의 무결성을 위해 먼저 'image' 테이블에서 레코드를 삭제하기 전에 'comment' 테이블에서 관련 레코드를 먼저 삭제하는 것이 좋습니다. 이렇게 하면 'image' 테이블의 레코드가 삭제된 후에도 'comment' 테이블에 해당 'image_id'를 참조하는 레코드가 남아 있는 상황을 피할 수 있습니다.
따라서 두 개의 SQL문을 순서대로 실행하는 것이 좋습니다. 먼저 'comment' 테이블에서 관련 레코드를 삭제하고, 그 다음 'image' 테이블에서 레코드를 삭제합니다.'프로젝트 > 프로젝트_사진첩' 카테고리의 다른 글
(기능추가 3-3) 무한스크롤 파인튜닝하기 (2) 2023.11.26 (기능추가4-6) 댓글삭제기능 구현(백엔드) (0) 2023.09.17 (기능추가4-5) 댓글삭제기능 구현(프론트) (0) 2023.09.13 (기능추가4-4) 댓글기능 구현 (1) 2023.09.12 (기능추가4-3) 작성자 테이블 구축, 양식초기화, select 태그 (0) 2023.09.09