PHP / MariaDB / 데이터베이스에 데이터 입력하기

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

폼(Form) 만들기 - employees_add.php

  • 데이터를 입력할 폼을 만듭니다.(number, date 타입과 required는 HTML5부터 지원합니다.)
  • 값은 employees_insert.php로 전송됩니다.
<form action="employees_insert.php" method="POST">
  <p><input type="number" name="emp_no" placeholder="NO" required></p>
  <p><input type="date" name="birth_date" required></p>
  <p><input type="text" name="first_name" placeholder="First Name" required></p>
  <p><input type="text" name="last_name" placeholder="Last Name" required></p>
  <p><select name="gender" required>
    <option value="M" selected>M</option>
    <option value="F">F</option>
  </select></p>
  <p><input type="date" name="hire_date" required></p>
  <button>ADD</button>
</form>
  • employees_add.php 전체 코드는 다음과 같습니다.
<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>Add Employee</title>
    <style>
      body {
        font-family: Consolas, monospace;
        font-family: 12px;
      }
    </style>
  </head>
  <body>
    <h1>Add Employee</h1>
    <form action="employees_insert.php" method="POST">
      <p><input type="number" name="emp_no" placeholder="NO" required></p>
      <p><input type="date" name="birth_date" required></p>
      <p><input type="text" name="first_name" placeholder="First Name" required></p>
      <p><input type="text" name="last_name" placeholder="Last Name" required></p>
      <p><select name="gender" required>
        <option value="M" selected>M</option>
        <option value="F">F</option>
      </select></p>
      <p><input type="date" name="hire_date" required></p>
      <button>ADD</button>
    </form>
  </body>
</html>

데이터 추가하기 - employees_insert.php

  • 넘어온 값을 변수에 저장합니다.
$emp_no = $_POST[ 'emp_no' ];
$birth_date = $_POST[ 'birth_date' ];
$first_name = $_POST[ 'first_name' ];
$last_name = $_POST[ 'last_name' ];
$gender = $_POST[ 'gender' ];
$hire_date = $_POST[ 'hire_date' ];
  • DB와 연결하는 코드, DB에 데이터를 추가하는 SQL문을 만듭니다.
$jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' );
$jb_sql = "INSERT INTO employees ( emp_no, birth_date, first_name, last_name, gender, hire_date ) VALUES ( '$emp_no', '$birth_date', '$first_name', '$last_name', '$gender', '$hire_date' );";
  • 실행합니다.
mysqli_query( $jb_conn, $jb_sql );
  • employees_add.php를 거치지 않고 바로 employees_insert.php에 접속하는 것을 대비해서 if 문을 만듭니다.
  • 값이 없이 employees_insert.php에 접속한 경우 Fail을 출력하고, 값이 있는 경우 데이터를 추가한 후 Successs를 출력합니다.
if ( is_null( $emp_no ) ) {
  echo '<h1>Fail!</h1>';
} else {
  $jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' );
  $jb_sql = "INSERT INTO employees ( emp_no, birth_date, first_name, last_name, gender, hire_date ) VALUES ( '$emp_no', '$birth_date', '$first_name', '$last_name', '$gender', '$hire_date' );";
  mysqli_query( $jb_conn, $jb_sql );
  echo '<h1>Success!</h1>';
}
  • employees_insert.php 전체 코드는 다음과 같습니다.
<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>Insert Employee</title>
    <style>
      body {
        font-family: Consolas, monospace;
        font-family: 12px;
      }
    </style>
  </head>
  <body>
    <?php
      $emp_no = $_POST[ 'emp_no' ];
      $birth_date = $_POST[ 'birth_date' ];
      $first_name = $_POST[ 'first_name' ];
      $last_name = $_POST[ 'last_name' ];
      $gender = $_POST[ 'gender' ];
      $hire_date = $_POST[ 'hire_date' ];
      if ( is_null( $emp_no ) ) {
        echo '<h1>Fail!</h1>';
      } else {
        $jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' );
        $jb_sql = "INSERT INTO employees ( emp_no, birth_date, first_name, last_name, gender, hire_date ) VALUES ( '$emp_no', '$birth_date', '$first_name', '$last_name', '$gender', '$hire_date' );";
        mysqli_query( $jb_conn, $jb_sql );
        echo '<h1>Success!</h1>';
      }
    ?>
    <p>
      <a href="employees.php">Employees Lists</a>
      <a href="employees_add.php">Add Employee</a>
     </p>
  </body>
</html>
  • 값을 입력하고 ADD를 클릭하면...

  • Success를 출력하고...

  • DB에 추가된 것을 확인할 수 있습니다.
MariaDB [employees]> SELECT * FROM employees LIMIT 5;
+--------+------------+------------+-----------+--------+------------+
| emp_no | birth_date | first_name | last_name | gender | hire_date  |
+--------+------------+------------+-----------+--------+------------+
|      1 | 2019-03-24 | ASD        | QWE       | M      | 2019-03-21 |
|  10001 | 1953-09-02 | Georgi     | Facello   | M      | 1986-06-26 |
|  10002 | 1964-06-02 | Bezalel    | Simmel    | F      | 1985-11-21 |
|  10003 | 1959-12-03 | Parto      | Bamford   | M      | 1986-08-28 |
|  10004 | 1954-05-01 | Chirstian  | Koblick   | M      | 1986-12-01 |
+--------+------------+------------+-----------+--------+------------+
5 rows in set (0.01 sec)
  • 전달된 값이 없으면 Fail을 출력합니다.

PHP 강좌