my sql 테이블에 데이터 저장 안됨

my sql 테이블에 데이터 저장 안됨

QA

my sql 테이블에 데이터 저장 안됨

본문

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

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>
<div class="info">
                        <dl>
                            <dt>
                                작성자
                            </dt>
                            <dd>
                                <label for="name"></label>
                                <input type="text" id="name" name="name" placeholder="작성자입력">
                            </dd>
                        </dl>
                        <dl>
                            <dt>
                                암호
                            </dt>
                            <dd><input type="password" id="password" name="password" placeholder="암호기입"></dd>
                            </dd>
                        </dl>
                    </div>
<div class="cont">
                        <p>
                            <label for="message"></label>
                            <textarea name="message" id="message" cols="30" rows="10" placeholder="내용입력"></textarea>
                        </p>
                    </div>
<input type="submit" value="등록">
</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

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

$sql = "INSERT ... ";
$sql= mysqli_escape_string( $sql); // 추가해 보세요.
$result = mysqli_query($conn, $sql);

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

 

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

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

그리고

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

 

 

error_reporting( E_ALL );
  ini_set( "display_errors", 1 ); 을 추가하여 확인하였으나
에러 메세지는 출력되지 않으며, 그냥 하얀 바탕이 나옵니다
여전히 MySQL 테이블에 데이터가 저장되지 않습니다ㅠㅠ
'권한 확인 필드이름하고 일치하는지 확인'은 어느 부분을 확인하여야 할까요?? 제가 초보자라 기초적인 질문일 수 있겠으나 가르침 부탁드립니다

일단은;;;
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));
} 서버쪽에 넣고 에러 내용확인해보세요

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

이렇게 되어있습니다


<?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>

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

insert 쿼리 코드를 올려보세요

 

 

현재 insert.php는 이렇습니다


<?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>

추가로 저기에 include 되어있는 lid.php에는


<?php
error_reporting(1);
ini_set("display_errors", 1);


$conn = mysqli_connect("localhost", "사용자명", "비밀번호", "데이터베이스명");
if(!$conn){
    echo 'db에 연결하지 못함'. mysqli_connect_errno() ;
} 
else{
    echo 'db에 연결됨';
}
?>

해당 내용 정도만 들어있습니다

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

 

테이블 구조 변경


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

 

regdata 컬럼의 데이터 형식 변경


ALTER TABLE `msg_board` MODIFY `regdata` DATETIME NOT NULL;

 

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


<?php
// 데이터베이스 연결 설정
$dbHost = 'localhost';
$dbUser = '사용자명';
$dbPass = '비밀번호';
$dbName = '데이터베이스명';
$conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);
if (!$conn) {
    die("데이터베이스 연결 오류: " . mysqli_connect_error());
}
// POST 데이터 가져오기
$subject = $_POST['subject'];
$name = $_POST['name'];
$password = $_POST['password'];
$message = $_POST['message'];
// SQL 쿼리 작성
$sql = "INSERT INTO msg_board (subject, name, password, message) VALUES ('$subject', '$name', '$password', '$message')";
if (mysqli_query($conn, $sql)) {
    echo "게시물이 성공적으로 등록되었습니다.";
} else {
    echo "등록 중 오류 발생: " . mysqli_error($conn);
}
mysqli_close($conn);
?>

 

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

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

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

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

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 1,509
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT