BOARD

자료·레퍼런스

PHP MySQL 데이터 삭제 로직 구현 가이드

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 37회 작성일 26-09-24 07:06

본문

PHP MySQL 데이터 삭제 로직 구현 가이드

그누보드 기능을 적용하거나 문제를 해결하려는 운영자·개발자를 위해 PHP와 MySQL을 활용한 기본적인 데이터 삭제 로직 구현 방법을 안내합니다.

PHP를 이용한 MySQL 데이터 삭제 기본 로직

PHP 환경에서 MySQL 데이터베이스에 접속하여 DELETE 쿼리를 실행하고 데이터를 삭제하는 기본적인 절차와 구현 예제는 다음과 같습니다.

1. 데이터베이스 연결 설정

mysql_connect 함수를 사용하여 MySQL 서버에 접속하고, mysql_select_db 함수를 통해 사용할 데이터베이스를 선택합니다. 연결 실패 시 or die 문을 통해 오류 메시지를 출력합니다.

$mysql_host = "localhost";
$mysql_user = "디비 아이디";
$mysql_password = "디비 비밀번호";
$mysql_db = "데이타베이스";

$dbconn = mysql_connect("{$mysql_host}", "{$mysql_user}", "{$mysql_password}") or die("데이터베이스 연결에 실패하였습니다.");
mysql_select_db($mysql_db, $dbconn);

2. DELETE 쿼리 작성 및 실행

DELETE FROM 명령어를 사용하여 특정 조건에 맞는 데이터를 삭제합니다. 이때 WHERE 구문을 누락하면 테이블 전체 데이터가 삭제될 수 있으므로 주의해야 합니다.

$sql = "delete from `테이블이름` where uid='{$uid}'";
$qry = mysql_query($sql);

if(!$qry) {
 die(mysql_error());
}

3. 데이터베이스 연결 종료 및 이동

작업이 완료되면 mysql_close 함수로 데이터베이스 연결을 닫고, 스크립트를 통해 목록 페이지 등으로 이동합니다.

mysql_close($dbconn);
<SCRIPT>
location.href="목록.php";
</SCRIPT>

주의 사항: 제공된 예제에 사용된 mysql_ 함수 계열은 현재 PHP 버전에서 지원이 중단(deprecated)되었으므로, 실제 운영 환경에서는 보안과 호환성을 위해 mysqli 또는 PDO 사용을 권장합니다.

현대적 PHP 환경에서의 데이터베이스 확장 모듈 권장 사항

현재 오래된 mysql_ 함수들은 PHP 5.5.0부터 사용이 중단(deprecated)되었으며 이후 버전에서 완전히 제거되었습니다. 따라서 현대적인 PHP 환경에서 보안과 성능을 강화하기 위해서는 아래와 같은 데이터베이스 확장 모듈을 사용하는 것이 권장됩니다.

  • mysqli (MySQL Improved): 기존 mysql_ 함수의 개선 버전으로, 객체 지향 및 절차적 인터페이스를 모두 지원하며 Prepared Statement(준비된 구문)를 통해 SQL 인젝션 공격을 방지할 수 있습니다.
  • PDO (PHP Data Objects): 다양한 데이터베이스(MySQL 등)를 일관된 인터페이스로 다룰 수 있게 해주는 데이터베이스 추상화 계층(abstraction layer)으로, 연결 핸들을 객체로 관리하며 보안성이 높습니다.

그누보드 및 PHP 환경에서의 데이터 삭제 쿼리 구조

그누보드와 같은 PHP 기반 웹 애플리케이션에서 특정 데이터를 안전하게 삭제하려면 SQL의 DELETE 문과 WHERE 조건절을 정확히 조합해야 합니다.

1. 기본 쿼리 구조

데이터를 삭제할 때는 반드시 WHERE 절을 사용하여 삭제할 대상 레코드를 특정해야 합니다. WHERE 절이 누락되면 테이블의 모든 데이터가 삭제되므로 주의가 필요합니다.

  • 기본 문법: DELETE FROM 테이블명 WHERE 조건
  • 예시: DELETE FROM {$g5['member_table']} WHERE mb_id = '$mb_id'

2. 그누보드에서의 구현 방식

그누보드는 내부적으로 sql_query() 함수를 사용하여 쿼리를 실행합니다. 관리자 페이지나 게시판 로직에서 데이터를 삭제할 때도 이 함수를 활용합니다.

  • 코드 예시 (회원 데이터 삭제):
    sql_query("DELETE FROM {$g5['member_table']} WHERE mb_id = '$mb_id'");
  • 첨부파일 삭제 예시:파일 정보를 먼저 조회한 후, 해당 경로의 파일을 삭제하고 DB 레코드를 제거하는 방식을 사용합니다.
    $row = sql_fetch("SELECT * FROM {$g5['board_file_table']} WHERE bo_table = '{$bo_table}' AND wr_id = '{$wr_id}' AND bf_no = '{$i}'");
    // 파일 삭제 로직 수행 후 DB 삭제
    sql_query("DELETE FROM {$g5['board_file_table']} WHERE bo_table = '{$bo_table}' AND wr_id = '{$wr_id}' AND bf_no = '{$i}'");

3. 안전한 삭제를 위한 주의사항

  • SQL 인젝션 방지: 사용자로부터 입력받은 변수($mb_id, $wr_id 등)를 쿼리에 직접 삽입할 때는 반드시 적절한 필터링이나 이스케이프 처리가 필요합니다.
  • 조건 확인: 삭제 쿼리 실행 전, 삭제하려는 대상이 정확한지 SELECT 문으로 먼저 확인하는 습관이 중요합니다.
  • 환경 차이: 최신 PHP 환경에서는 mysql_ 계열 함수 대신 mysqli 또는 PDO를 사용하는 것이 권장되나, 그누보드 코어는 자체적인 sql_query 함수를 통해 DB 연동을 추상화하고 있으므로 해당 환경의 규칙을 따르는 것이 좋습니다.

상황별 데이터 삭제 로직 구현 가이드

  • 내 상황: PHP 환경에서 MySQL 데이터베이스에 접속하여 특정 데이터를 삭제하는 기본 로직을 구현하려는 경우
  • 선택 기준: PHP 4.1.0 이상 환경 및 mysql_ 함수 기반의 기본적인 연동 및 삭제 쿼리 실행 방식을 적용할 때
  • 다음 행동: mysql_connect로 데이터베이스에 연결하고, DELETE FROM 테이블명 WHERE 조건 구문으로 쿼리를 작성한 뒤 mysql_query를 통해 실행 및 처리 결과를 확인합니다.

실전 FAQ

Q. WHERE 절을 누락하여 테이블의 모든 데이터가 삭제되는 것을 어떻게 방지하나요?

  • 실행 중 막히는 점: DELETE FROM 구문 작성 시 WHERE 조건을 지정하지 않으면 테이블 안의 모든 레코드가 삭제되는 문제가 발생합니다.
  • 대안 및 예외 처리: 데이터 삭제 쿼리를 실행하기 전에 삭제 대상 고유값(uid 등)이 올바르게 전달되었는지 확인하고, 조건절이 정확히 포함되어 있는지 검토해야 합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.