채택완료
my sql 테이블에 데이터 저장 안됨
안녕하세요, 너무 자주 질문을 하는 것은 아닌가 걱정반 눈치반으로 글을 씁니다
localhost에서 게시글을 쓰고, 그 게시글의 데이터를 MySQL 테이블에 저장하는 과정이 정상적으로 작동하지 않습니다
<form action="insert.php" method="post">로 분명 데이터를 보냈다고 생각했는데, 데이터를 보낼 때 마다 int인 number 값만 올라가고 나머지는 빈 백지 상태 입니다.
제가 사용한 write.php 입니다
Copy
<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 퀴리들 입니다 :
Copy
ALTER TABLE `msg_board` CHANGE `number` `number` INT(10) NOT NULL AUTO_INCREMENT;
Copy
ALTER TABLE `msg_board` CHANGE ` subject` ` subject` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
Copy
ALTER TABLE `msg_board` CHANGE `name` `name` VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
Copy
ALTER TABLE `msg_board` CHANGE `password` `password` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
Copy
ALTER TABLE `msg_board` CHANGE `regdata` `regdata` VARCHAR(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
Copy
ALTER TABLE `msg_board` CHANGE `message` `message` MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
혹시 제가 무언가 잘못 설정한걸까요?? 테이블 구조의 어디가 잘못되어있는 것인지 잘 모르겠습니다ㅠㅠ
답변 7개 / 댓글 7개
채택된 답변
+20 포인트
1. 해당 쿼리를 phpmyadmin 등에서 실행해보세요.
2. 해당위치에 common 파일이 인클루드 되어있는지 확인해보세요.
다음과 같이 해보시는 건 어떨까 합니다.
테이블 구조 변경
Copy
ALTER TABLE `msg_board` MODIFY `number` INT(10) NOT NULL AUTO_INCREMENT;
regdata 컬럼의 데이터 형식 변경
Copy
ALTER TABLE `msg_board` MODIFY `regdata` DATETIME NOT NULL;
데이터베이스 연결 및 데이터 삽입
Copy
<?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);
?>
이렇게 하면 데이터가 데이터베이스에 올바르게 저장될 것으로 생각합니다.
alter table은 한번 실행한 뒤 컬럼 확인 후 삭제 해버리세요
insert 쿼리 코드를 올려보세요
답변에 대한 댓글 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]
[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]
추가로 저기에 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]
해당 내용 정도만 들어있습니다
[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]
해당 내용 정도만 들어있습니다
답변에 대한 댓글 1개
이렇게 되어있습니다
[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]
[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]
에러메시시는 무엇인지요?
코드는 별이상없이 보입니다.
디비에 저장되지않는다면 권한 확인 필드이름하고 일치하는지 확인 또확인요
그리고
$_POST 배열을 확인하여 필드 이름과 값이 올바른지 도 스크립트 쪽처리부분 확인해보시구요
답변에 대한 댓글 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));
} 서버쪽에 넣고 에러 내용확인해보세요
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));
} 서버쪽에 넣고 에러 내용확인해보세요
답변을 작성하려면 로그인이 필요합니다.
1. phpmyadmin에서 퀴리를 실행하는 것은 어떻게 하면 되나요?
2. 어디에서 어디로 인클루드 해야하나요??