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
배열을 확인하여 필드 이름과 값이 올바른지 도 스크립트 쪽처리부분 확인해보시구요
insert.php는 어떻게 되어 있나요?
alter table은 한번 실행한 뒤 컬럼 확인 후 삭제 해버리세요
insert 쿼리 코드를 올려보세요
다음과 같이 해보시는 건 어떨까 합니다.
테이블 구조 변경
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 파일이 인클루드 되어있는지 확인해보세요.
일단 받는 페이지에서 post 값을 제대로 받았는지부터 채크해보세요..
일부라도 들어가는거보면 문법에는 이상이 없고 데이터만 누락되어 들어가는것 같은데..