2022. 10. 13. 00:42ㆍProgram/PHP
147_PHP textarea 태그의 내용을 데이터베이스에 저장하기 - 따옴표 대응 addslashes()
[요약]
- textarea 태그에 입력한 따옴표에 대해 대응하는 방법에 대해 알아보자.
textarea 태그를 사용하면 장문의 내용을 입력할 수 있다.
이중 따옴표를 입력하여 데이터베이스에 저장할 때 쿼리문에서 오류가 발생하게 된다.
그럼 어떻게 오류가 발생할 수 있는지에 대해 알아보자.
우선 textarea 태그를 생성하여 입력폼을 생성한다.
[예제: 150-1_textarea.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>TEXTAREA 태그 입력폼</title>
</head>
<body>
<form name="textsave" method="post" action="./150-2_textSave.php">
<textarea name="text"></textarea>
<input type="submit" value="저장" />
</form>
</body>
</html>
실행결과
그럼 다음으로 [예제 150-1]의 form 태그의 action 에 명시된 [150-2_textSave.php] 파일을 생성해보자.
textarea 태그에서 입력된 내용은 테이블 prodReview에 저장하도록 한다.
[예제: 150-2_textSave.php ]
<?php
include $_SERVER['DOCUMENT_ROOT'] . '/php/contents/108-2_connectDB.php';
$text = $_POST['text'];
$sql = "INSERT INTO prodReview(myMemberID, content, regDate) ";
$sql .= "VALUES(1, '{$text}', NOW())";
echo $sql;
echo "<br>";
$result = $dbConnect->query($sql);
if ($result) {
echo "입력 성공";
} else {
echo "입력 실패";
}
쿼리문을 확인하기 위해 출력해보도록 하자.
웹브라우저에서 [150-1_textarea.php] 파일을 열고 다음의 내용을 입력한다.
내용을 입력한 후 저장 버튼을 누르면 다음과 같이 [입력 실패] 문구와 함께 입력에 실패한 쿼리문을 확인 할 수 있다.
입력에 실패한 이유는 입력한 문구 [I'm a boy. You're a girl.] 에 사용된 따옴표 때문이다.
문자열은 큰 따옴표 또는 작은 따옴표에 쌍을 이루어 묶여야 하지만 쿼리문의 문자열을 보면 그렇지 않다.
'I'm a boy. You're a girl.'
I의 앞 뒤에 작은 따옴표가 위치하여 문자열이 시작후 I(영문 아이) 이후 다시 작은 따옴표가 위치하여 문자열이 끝났지만 입력한 문자열이 계속 위치하여 입력할 수 없는 쿼리문이 되어 쿼리문 실행시 오류를 발생시키게 된다.
이에 대응하기 위해 addslashes()함수를 사용한다.
[addslashes() 함수 사용 방법]
addslashes(문자열);
addslashes()를 사용하면 따옴표 앞에 역슬래시가 붙어 따옴표를 문자열의 따옴표 표시용으로 인식하게 된다.
[예시 150-2]의 4라인을 다음과 같이 addslashes 함수를 사용하여 문자열을 대입하면 오류가 발생하지 않게된다.
$text = addslashes($_POST['text']);
위와 같이 코드를 수정 후 웹브라우저에서 [150-2_textSave.php]가 실행된 페이지를 새로고침하면 다음과 같이 정상적으로 데이터가 들어감을 확인 할 수 있다.
위 결과를 확인해보면 addslashes() 함수를 사용함으로써 입력한 내용에 사용된 따옴표앞에 \(또는 원화표시)가 들어감을 확인할 수 있다.
초보자를 위한 PHP 200제
김태영 지음 | 정보문화사
'Program > PHP' 카테고리의 다른 글
[PHP] textarea 태그의 내용을 파일에 저장하기 fwrite() (1) | 2022.10.13 |
---|---|
[PHP] textarea 태그의 내용을 데이터베이스에서 불러오기 - 줄바꿈 대응 nl2br() (0) | 2022.10.13 |
[PHP] 입력한 데이터를 데이터베이스에 저장하기 (0) | 2022.10.13 |
[PHP] POST 방식으로 FORM 태그의 데이터 전송 (0) | 2022.10.12 |
[PHP] POST 방식 데이터 받기 (0) | 2022.10.12 |