[PHP] textarea 태그의 내용을 데이터베이스에 저장하기 - 따옴표 대응 addslashes()

2022. 10. 13. 00:42Program/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제
김태영 지음 | 정보문화사