PHP를 배우는 도중에 몇가지 물어봅니다. 채택완료
$sql="CREATE TABLE game(FirstName CHAR(30),LastName CHAR(30),Age INT)";
위와같이 테이블은 생성하는 구문에서요.
CHAR(30), INT이 무엇을 뜻하는 것인가요?
<html>
<body><form action="insert.php" method="post">
Firstname: <input type="text" name="firstname">
Lastname: <input type="text" name="lastname">
Age: <input type="text" name="age">
<input type="submit">
</form>
</body>
</html>
============================================================================
<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// escape variables for security
$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
$lastname = mysqli_real_escape_string($con, $_POST['lastname']);
$age = mysqli_real_escape_string($con, $_POST['age']);
$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('$firstname', '$lastname', '$age')";
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
입력폼에 한글을 입력하고 POST값으로 넘겨줬더니
DB에 한글이 깨어져서 저장이 됩니다.
이거 어떻게 해결을 하나요?
답변 3개
1번 답 : 데이터 입력되는 값의 형식을 정의하는 것입니다. 아래 링크 참조
http://comefeel.com/tt/comefeel/entry/MySQL%EC%9D%B4-%EC%A7%80%EC%9B%90%ED%95%98%EB%8A%94-%EC%BB%AC%EB%9F%BC%ED%83%80%EC%9E%85">http://comefeel.com/tt/comefeel/entry/MySQL%EC%9D%B4-%EC%A7%80%EC%9B%90%ED%95%98%EB%8A%94-%EC%BB%AC%EB%9F%BC%ED%83%80%EC%9E%85
2번 답 : 페이지 인코딩 선언하세요
http://msdn.microsoft.com/ko-kr/library/cc295274.aspx">http://msdn.microsoft.com/ko-kr/library/cc295274.aspx
답변에 대한 댓글 2개
페이지에 표시되는 한글은 정상적인데
DB테이블에 입력되는게 깨져서 입력됩니다;
댓글을 작성하려면 로그인이 필요합니다.
CHAR(30), INT 는 테이블 생성시 DB 필드의 자료형을 지정하는 것입니다.
CHAR(30) = CHARACTER (1 byte) * 30 = 30 bytes (문자 30개 저장 가능)
INT = INTEGER (4 byte) = 4 bytes (–2,147,483,648 ~ 2,147,483,647 범위의 숫자 저장 가능)
그리고 한글이 깨지는 문제는
입력받은 한글 인코딩과 DB 한글 인코딩이 일치하지 않는듯합니다. (대게 euc-kr, utf-8 간의 문제)
입력받은 한글값이 넘어오면 DB 인코딩에 맞게 변환을 한뒤 DB에 INSERT 해주면 됩니다.
인코딩 문제에 대한 자세한 내용은 링크를 걸어둡니다.
답변에 대한 댓글 2개
벌써 윗분의 내용으로 문제를 해결한 상태라 ^.^
채택을 두번이 가능하면 좋겠는데 그게 안되는 관계로 ㅎㅎ
정말 감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인