[PHP] 입력한 데이터를 데이터베이스에 저장하기

2022. 10. 13. 00:19Program/PHP

146_PHP 입력한 데이터를 데이터베이스에 저장하기

[요약]

  • form 태그에서 입력한 내용을 데이터베이스에 저장하는 방법에 대해 알아보자.

웹 서비스를 이용하면서 입력하는 개인정보, 게시글 등은 대부분 데이터베이스에 저장된다.

앞에서 이미 form 태그에서 입력한 데이터를 서버로 전송하는 방법을 알아봤고, 또한 테이블에 데이터를 입력하는 방법도 알아보았으므로 이 두가지를 응용하면 구현할 수 있다.

데이터베이스의 INSERT 문을 학습할 때 SQL문에 입력할 데이터를 POST 또는 GET 으로 받은 데이터를 입력한다.

 

예를 들면 다음과 같다.

INSERT INOT 테이블명 (field1, field2) VALUES ($_POST['v1'], $_POST['v2']);

 

다음은 myMember 테이블에 데이터를 입력하기 위한 폼이다.

[예제: 149-1_form_post.php ]

<!DOCTYPE html>
<html lang="ko">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>myMember 테이블의 데이터 입력 폼</title>
</head>

<body>
  <form name="test" method="post" action="./149-2_insert.php">
    <input type="text" name="userId" placeholder="아이디 입력" required />
    <br>
    <input type="text" name="userName" placeholder="이름 입력" required />
    <br>
    <input type="password" name="userPw" placeholder="비밀번호 입력" required />
    <br>
    <input type="text" name="userPhone" placeholder="휴대전화번호 입력" required />
    <br>
    <input type="email" name="userEmail" placeholder="이메일 입력" required />
    <br>
    생일 : <br>
    <select name="birthYear" required>
      <?php
      $thisYear = date('Y', time());
      for ($i = 1960; $i <= $thisYear; $i++) {
        echo "<option value='{$i}'>{$i}</option>";
      }
      ?>
    </select>년
    <select name="birthMonth" required>
      <?php
      for ($i = 1; $i <= 12; $i++) {
        echo "<option value='{$i}'>{$i}</option>";
      }
      ?>
    </select>월
    <select name="birthDay" required>
      <?php
      for ($i = 1; $i <= 31; $i++) {
        echo "<option value='{$i}'>{$i}</option>";
      }
      ?>
    </select>일
    <br>
    성별 : <br>
    남<input type="radio" name="userGender" value="m" required />
    여<input type="radio" name="userGender" value="w" required />
    <br>
    <input type="submit" value="입력" />
  </form>
</body>

</html>

실행결과

 

그럼 이제 [예제 149-1]의 form 태그의 action 속성에 명시된 [예제 149-2_insert.php] 파일을 생성해보자.

[149-2_insert.php]는 [149-1_form_post.php]에서 보낸 데이터를 myMember 테이블에 저장하는 기능을 하게된다.

[예제: 149-1_form_post.php ]

<?php
    include $_SERVER['DOCUMENT_ROOT'] . '/php/108-2_connectDB.php';

    $userId = $_POST['userId'];
    $userName = $_POST['userName'];
    $userPw = $_POST['userPw'];
    $userPhone = $_POST['userPhone'];
    $userEmail = $_POST['userEmail'];
    $userBirthDay = $_POST['birthYear'] . '-' . $_POST['birthMonth'] . '-' . $_POST['birthDay'];
    $userGender = $_POST['userGender'];

    $sql = "INSERT INTO myMember (userId, name, password, phone, email, birthDay, gender, regDate)";
    $sql .= "VALUES ('{$userId}', '{$userName}', '{$userPw}', '{$userPhone}',";
    #sql .= "'{$userEmail}', '{$userBirthDay}', '{$userGender}', NOW())";

    $result = $dbConnect->query($sql);

    if ($result) {
      $sql = "SELECT userId, name FROM myMember";
      $result = $dbConnect->query($sql);

      $dataCount = $result->num_rows;

      for ($i = 0; $i < $dataCount; $i++) {
        $memberInfo = $result->fetch_array(MYSQLI_ASSOC);
        echo "아이디 : " . $memberInfo['userId'];
        echo "<br>";
        echo "이름 : " . $memberInfo['name'];
        echo "<hr>";
      }
    } else {
      echo "입력 실패";
    }
?>

1) 배열 $_POST 에 있는 데이터를 변수를 선언하여 대입한다. 이 부분은 변수를 선언하지 않고 $_POST의 데이터를 바로 쿼리문에 입력해도 무방하다.

 

2) 생년월일은 데이터를 yyyy-mm-dd와 같은 형태로 만들어서 입력하기 위해 연결 연산자를 사용하여 각 구분마다 '-'를 사용했다.

 

3) INSERT문을 생성한다. 한 줄로 작성하면 길이가 길어 라인이 변겨오디는 문제가 발행하여 여러 개로 나눠서 변수 sql에 대입했다.

 

이렇게 myMember 테이블에 데이터를 입력하는 파일을 생성했다.

입력폼인 [예제 149-1_form_post.php]를 웹브라우저에서 실행하고 데이터를 입력하여 테이블에 데이터가 입력되는지 확인해보자.

 

[입력] 버튼을 누르면 데이터가 [149-2_insert.php]로 전송되어 myMember 테이블에 입력되게 된다.

위의 결과를 보면 form태그에 입력한 데이터를 확인할 수 있다.

 

 


 

 

 

초보자를 위한 PHP 200제
김태영 지음 | 정보문화사