2022. 10. 13. 00:19ㆍProgram/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제
김태영 지음 | 정보문화사
'Program > PHP' 카테고리의 다른 글
[PHP] textarea 태그의 내용을 데이터베이스에서 불러오기 - 줄바꿈 대응 nl2br() (0) | 2022.10.13 |
---|---|
[PHP] textarea 태그의 내용을 데이터베이스에 저장하기 - 따옴표 대응 addslashes() (0) | 2022.10.13 |
[PHP] POST 방식으로 FORM 태그의 데이터 전송 (0) | 2022.10.12 |
[PHP] POST 방식 데이터 받기 (0) | 2022.10.12 |
[PHP] GET 방식으로 FORM 태그의 데이터 전송 (0) | 2022.10.12 |