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을 출력합니다.