테스트 사이트 - 개발 중인 베타 버전입니다

my sql 테이블에 데이터 저장 안됨 채택완료

YourVoid 2년 전 조회 9,363

안녕하세요, 너무 자주 질문을 하는 것은 아닌가 걱정반 눈치반으로 글을 씁니다

localhost에서 게시글을 쓰고, 그 게시글의 데이터를 MySQL 테이블에 저장하는 과정이 정상적으로 작동하지 않습니다

<form action="insert.php" method="post">로 분명 데이터를 보냈다고 생각했는데, 데이터를 보낼 때 마다 int인 number 값만 올라가고 나머지는 빈 백지 상태 입니다.

 

 

제가 사용한 write.php 입니다

<form action="insert.php" method="post">

<div class="title">

<dl>

                            <dt>

                                제목

                            </dt>

                            <label for="name">제목</label>

                            <input type="text" id="subject" name="subject" placeholder="제목입력">

                        </dl>

</div></p>

<p><div class="info">

                        <dl>

                            <dt>

                                작성자

                            </dt>

                            <dd>

                                <label for="name"></label>

                                <input type="text" id="name" name="name" placeholder="작성자입력">

                            </dd>

                        </dl></p>

<p>                        <dl>

                            <dt>

                                암호

                            </dt>

                            <dd><input type="password" id="password" name="password" placeholder="암호기입"></dd>

                            </dd>

                        </dl></p>

<p>                    </div></p>

<p><div class="cont">

                        <p>

                            <label for="message"></label>

                            <textarea name="message" id="message" cols="30" rows="10" placeholder="내용입력"></textarea>

                        </p>

                    </div></p>

<p><input type="submit" value="등록"></p>

<p></form>

 

 

my sql 퀴리들 입니다 : 

ALTER TABLE `msg_board` CHANGE `number` `number` INT(10) NOT NULL AUTO_INCREMENT;

ALTER TABLE `msg_board` CHANGE ` subject` ` subject` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;

ALTER TABLE `msg_board` CHANGE `name` `name` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;

ALTER TABLE `msg_board` CHANGE `password` `password` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;

ALTER TABLE `msg_board` CHANGE `regdata` `regdata` VARCHAR(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;

ALTER TABLE `msg_board` CHANGE `message` `message` MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;

혹시 제가 무언가 잘못 설정한걸까요?? 테이블 구조의 어디가 잘못되어있는 것인지 잘 모르겠습니다ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 7개

채택된 답변
+20 포인트

https://www.php.net/manual/en/function.mysqli-escape-string.php

$sql = "INSERT ... ";
$sql= mysqli_escape_string( $sql); // 추가해 보세요.
$result = mysqli_query($conn, $sql);
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

일단 받는 페이지에서 post 값을 제대로 받았는지부터 채크해보세요..

일부라도 들어가는거보면 문법에는 이상이 없고 데이터만 누락되어 들어가는것 같은데..

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

1. 해당 쿼리를 phpmyadmin 등에서 실행해보세요.

2. 해당위치에 common 파일이 인클루드 되어있는지 확인해보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

Y
YourVoid
2년 전
제가 막 시작한 초보자라 어리숙하게도 답변주신 사항을 잘 이해하지 못하였습니다ㅠㅠ
1. phpmyadmin에서 퀴리를 실행하는 것은 어떻게 하면 되나요?
2. 어디에서 어디로 인클루드 해야하나요??

댓글을 작성하려면 로그인이 필요합니다.

다음과 같이 해보시는 건 어떨까 합니다.

 

테이블 구조 변경

</p>

<p>ALTER TABLE `msg_board` MODIFY `number` INT(10) NOT NULL AUTO_INCREMENT;

 

regdata 컬럼의 데이터 형식 변경

</p>

<p>ALTER TABLE `msg_board` MODIFY `regdata` DATETIME NOT NULL;

 

데이터베이스 연결 및 데이터 삽입

</p>

<p><?php

// 데이터베이스 연결 설정

$dbHost = 'localhost';

$dbUser = '사용자명';

$dbPass = '비밀번호';

$dbName = '데이터베이스명';</p>

<p>$conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);</p>

<p>if (!$conn) {

    die("데이터베이스 연결 오류: " . mysqli_connect_error());

}</p>

<p>// POST 데이터 가져오기

$subject = $_POST['subject'];

$name = $_POST['name'];

$password = $_POST['password'];

$message = $_POST['message'];</p>

<p>// SQL 쿼리 작성

$sql = "INSERT INTO msg_board (subject, name, password, message) VALUES ('$subject', '$name', '$password', '$message')";</p>

<p>if (mysqli_query($conn, $sql)) {

    echo "게시물이 성공적으로 등록되었습니다.";

} else {

    echo "등록 중 오류 발생: " . mysqli_error($conn);

}</p>

<p>mysqli_close($conn);

?>

 

이렇게 하면 데이터가 데이터베이스에 올바르게 저장될 것으로 생각합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

Y
YourVoid
2년 전
테이블 구조/데이터형식 변경과 코드 수정을 해보았습니다만 아직 해결이 되지 않았습니다ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

2년 전

alter table은 한번 실행한 뒤 컬럼 확인 후 삭제 해버리세요

insert 쿼리 코드를 올려보세요

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

Y
YourVoid
2년 전
현재 insert.php는 이렇습니다

[code]
<?php

$conn = mysqli_connect("localhost", "사용자명", "비밀번호", "데이터베이스명");

include "lid.php";

$user_name = $_POST['name'];
$user_subject = $_POST['subject'];
$message = $_POST['message'];
$regdata = date("y-m-d");

$query = "insert into sing_board(name, subject, message, regdata)
values('$name','$subject','$message','$regdata')";

$sql = "INSERT INTO msg_board (subject, name, message) VALUES ('$user_subject', '$user_name', '$user_msg')";
$result = mysqli_query($conn, $sql);

//echo $query;


?>

<script>
//location.href = 'list.php';
</script>
[/code]
Y
YourVoid
2년 전
추가로 저기에 include 되어있는 lid.php에는
[code]
<?php
error_reporting(1);
ini_set("display_errors", 1);


$conn = mysqli_connect("localhost", "사용자명", "비밀번호", "데이터베이스명");
if(!$conn){
echo 'db에 연결하지 못함'. mysqli_connect_errno() ;
}
else{
echo 'db에 연결됨';
}
?>
[/code]
해당 내용 정도만 들어있습니다

댓글을 작성하려면 로그인이 필요합니다.

insert.php는 어떻게 되어 있나요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

Y
YourVoid
2년 전
이렇게 되어있습니다
[code]
<?php

$conn = mysqli_connect("localhost", "사용자명", "비밀번호", "데이터베이스명");

include "lid.php";

$user_name = $_POST['name'];
$user_subject = $_POST['subject'];
$message = $_POST['message'];
$regdata = date("y-m-d");

$query = "insert into sing_board(name, subject, message, regdata)
values('$name','$subject','$message','$regdata')";

$sql = "INSERT INTO msg_board (subject, name, message) VALUES ('$user_subject', '$user_name', '$user_msg')";
$result = mysqli_query($conn, $sql);

//echo $query;


?>

<script>
//location.href = 'list.php';
</script>
[/code]

댓글을 작성하려면 로그인이 필요합니다.

웅푸
2년 전

에러메시시는 무엇인지요?

 

코드는 별이상없이 보입니다. 

디비에 저장되지않는다면 권한 확인 필드이름하고 일치하는지 확인 또확인요

그리고

$_POST 배열을 확인하여 필드 이름과 값이 올바른지 도 스크립트 쪽처리부분 확인해보시구요

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

Y
YourVoid
2년 전
error_reporting( E_ALL );
ini_set( "display_errors", 1 ); 을 추가하여 확인하였으나
에러 메세지는 출력되지 않으며, 그냥 하얀 바탕이 나옵니다
여전히 MySQL 테이블에 데이터가 저장되지 않습니다ㅠㅠ
'권한 확인 필드이름하고 일치하는지 확인'은 어느 부분을 확인하여야 할까요?? 제가 초보자라 기초적인 질문일 수 있겠으나 가르침 부탁드립니다
웅프
2년 전
일단은;;;
ALTER TABLE `msg_board` CHANGE ` subject` ` subject` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;

여기보시면 ` subject` 앞에 공백들어가면 않됩니다. 제거해주시고 다시 날려주세요.

그래도 문제 가 있으면,..
if (!$result) {
die('MySQL 에러: ' . mysqli_error($connection));
} 서버쪽에 넣고 에러 내용확인해보세요

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인