PHP / MariaDB / 데이터베이스에서 데이터 삭제하기

이 강좌에서 사용하는 데이터베이스는 employees입니다. (employees 설치 하기)

직원 추가

데이터베이스에 데이터 입력하기 강좌에 있는 방식으로 직원을 추가합니다. 연봉, 직책 등이 연결된 기존 직원을 삭제하면 문제가 생길 수 있으므로, 새로 직원을 추가한 후 그 직원을 삭제합니다.

직원 삭제하기 - employees.php

직원 정보를 출력하는 페이지에 직원을 삭제하는 기능을 추가해보겠습니다. Delete 버튼을 클릭하면 바로 삭제되고 페이지가 다시 로드되는 방식입니다.

폼 작성

데이터를 삭제하기 위해서는 어떤 데이터를 삭제할지 알려줘야 합니다. 숨겨진 폼을 이용하여 직원 번호(emp_no)를 변수 delete_emp_no로 넘겨주는 코드를 작성합니다.

$jb_delete = '
  <form action="employees.php" method="POST">
    <input type="hidden" name="delete_emp_no" value="' . $jb_row[ 'emp_no' ] . '">
    <input type="submit" value="Delete">
  </form>
';

표에 추가

직원 출력 표에 삭제 버튼을 추가합니다.

if ( isset( $delete_emp_no ) ) {
  $jb_sql_delete = "DELETE FROM employees WHERE emp_no = '$delete_emp_no';";
  mysqli_query( $jb_conn, $jb_sql_delete );
  echo '<p style="color: red;">Employee ' . $delete_emp_no . ' is deleted.</p>';
}

데이터 삭제

페이지를 로드할 때 delete_emp_no의 값이 있으면 데이터를 삭제하고 메시지를 출력합니다.

if ( isset( $delete_emp_no ) ) {
  $jb_sql_delete = "DELETE FROM employees WHERE emp_no = '$delete_emp_no';";
  mysqli_query( $jb_conn, $jb_sql_delete );
  echo '<p style="color: red;">Employee ' . $delete_emp_no . ' is deleted.</p>';
}

전체 코드

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>Employees</title>
    <style>
      body {
        font-family: Consolas, monospace;
        font-family: 12px;
      }
      table {
        width: 100%;
      }
      th, td {
        padding: 10px;
        border-bottom: 1px solid #dadada;
        text-align: center;
      }
    </style>
  </head>
  <body>
    <table>
      <thead>
        <tr>
          <th>emp_no</th>
          <th>first_name</th>
          <th>last_name</th>
          <th>hire_date</th>
          <th>Delete</th>
        </tr>
      </thead>
      <tbody>
        <?php
          $jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' );
          $delete_emp_no = $_POST[ 'delete_emp_no' ];
          if ( isset( $delete_emp_no ) ) {
            $jb_sql_delete = "DELETE FROM employees WHERE emp_no = '$delete_emp_no';";
            mysqli_query( $jb_conn, $jb_sql_delete );
            echo '<p style="color: red;">Employee ' . $delete_emp_no . ' is deleted.</p>';
          }
          $jb_sql = "SELECT * FROM employees LIMIT 5;";
          $jb_result = mysqli_query( $jb_conn, $jb_sql );
          while( $jb_row = mysqli_fetch_array( $jb_result ) ) {
            $jb_delete = '
              <form action="employees.php" method="POST">
                <input type="hidden" name="delete_emp_no" value="' . $jb_row[ 'emp_no' ] . '">
                <input type="submit" value="Delete">
              </form>
            ';
            echo '<tr><td>' . $jb_row[ 'emp_no' ] . '</td><td>'. $jb_row[ 'first_name' ] . '</td><td>' . $jb_row[ 'last_name' ] . '</td><td>' . $jb_row[ 'hire_date' ] . '</td><td>' . $jb_delete . '</td></tr>';
          }
        ?>
      </tbody>
    </table>
  </body>
</html>

PHP 강좌