mysql로 게시판을 임시로 제작을 해보았는데 글등록 오류
본문
<?php
require_once("../data/dbconfig.php");
//$_POST['bno']이 있을 때만 $bno 선언
if(isset($_POST['bno'])) {
$bNo = $_POST['bno'];
}
//bno이 없다면(글 쓰기라면) 변수 선언
if(empty($bNo)) {
$bID = $_POST['bID'];
$date = date('Y-m-d H:i:s');
}
//항상 변수 선언
$bPassword = $_POST['bPassword'];
$bTitle = $_POST['bTitle'];
$bContent = $_POST['bContent'];
//글 수정
if(isset($bNo)) {
//수정 할 글의 비밀번호가 입력된 비밀번호와 맞는지 체크
$sql = 'select count(b_password) as cnt from board_free where b_password=password("' . $bPassword . '") and b_no = ' . $bNo;
$result = $db_conn->query($sql);
$row = $result->fetch_assoc();
//비밀번호가 맞다면 업데이트 쿼리 작성
if($row['cnt']) {
$sql = 'update board_free set b_title="' . $bTitle . '", b_content="' . $bContent . '" where b_no = ' . $bNo;
$msgState = '수정';
//틀리다면 메시지 출력 후 이전화면으로
} else {
$msg = '비밀번호가 맞지 않습니다.';
?>
<script>
alert("<?php echo $msg?>");
history.back();
</script>
<?php
exit;
}
//글 등록
} else {
$sql = 'insert into board_free (b_no, b_title, b_content, b_date, b_hit, b_id, b_password) values(null, "' . $bTitle . '", "' . $bContent . '", "' . $date . '", 0, "' . $bID . '", password("' . $bPassword . '"))';
$msgState = '등록';
}
//메시지가 없다면 (오류가 없다면)
if(empty($msg)) {
$result = $db_conn->query($sql);
//쿼리가 정상 실행 됐다면,
if($result) {
$msg = '정상적으로 글이 ' . $msgState . '되었습니다.';
if(empty($bNo)) {
$bNo = $db_conn->insert_id;
}
$replaceURL = './view.php?bno=' . $bNo;
} else {
$msg = '글을 ' . $msgState . '하지 못했습니다.';
?>
<script>
alert("<?php echo $msg?>");
history.back();
</script>
<?php
exit;
}
}
?>
<script>
alert("<?php echo $msg?>");
location.replace("<?php echo $replaceURL?>");
</script>
게시판을 제작해 보았는데, 글을 등록하지 못했다고 계속 뜨는 상태여서요....
혹시 코드상에 문제가 있는걸까요?
처음에 mysqli쿼리를 dbconfig에서 못찾아서, daconfig.php에서 mysqli_close($db_conn); 이부분을 주석처리한 상태입니다.
질문이 어찌보면 광범위할 수 있는데, 가늠이라도 잡기위해 질문을 드려봅니다.
!-->답변 2
//메시지가 없다면 (오류가 없다면)
if(empty($msg)) {
$result = $db_conn->query($sql);
if( !$result) {
mysqli_connect_error();
}
//쿼리가 정상 실행 됐다면,
추가해서 query 문에 에러가 있는지 확인해 보세요.
$db_con이 어디서 받아 오나요?
우선은 mysqli_query()문 에러 메시지를 출력해 보세요.
답변을 작성하시기 전에 로그인 해주세요.