WEB3 - PHP & MySQL

활용 - 글생성

수업소개

mysqli API를 활용해서 MySQL에 글을 생성하는 방법을 알아봅니다.

 

 

강의

 

예제

변경사항

index.php

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>WEB</title>
  </head>
  <body>
    <h1>WEB</h1>
    <ol>
      <li>HTML</li>
    </ol>
    <a href="create.php">create</a>
    <h2>Welcome</h2>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit
  </body>
</html>

create.php

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>WEB</title>
  </head>
  <body>
    <h1>WEB</h1>
    <ol>
      <li>HTML</li>
    </ol>
    <form action="process_create.php" method="POST">
      <p><input type="text" name="title" placeholder="title"></p>
      <p><textarea name="description" placeholder="description"></textarea></p>
      <p><input type="submit"></p>
    </form>
  </body>
</html>

process_create.php

<?php
$conn = mysqli_connect(
  'localhost',
  'root',
  '111111',
  'opentutorials');
$sql = "
  INSERT INTO topic
    (title, description, created)
    VALUES(
        '{$_POST['title']}',
        '{$_POST['description']}',
        NOW()
    )
";
$result = mysqli_query($conn, $sql);
if($result === false){
  echo '저장하는 과정에서 문제가 생겼습니다. 관리자에게 문의해주세요';
  error_log(mysqli_error($conn));
} else {
  echo '성공했습니다. <a href="index.php">돌아가기</a>';
}
?>

 

댓글

댓글 본문
작성자
비밀번호
  1. dlaruddnrsla@naver.com
    $result === false 문은 저장을 하는 sql문이 아니라 php 문법입니당
    if($result === false) 에서
    if 만약
    $result 변수에 저장된 값이
    === false false 라면
    TRUE를 반환하라는 php 문법이에요
    대화보기
    • 쭈글
      $result === false 이 문법 맞나요? 성공으로 나오는데 저장안되는거같네요 데이터베이스는 잘 모르니 헷갈리네요
    • egoing
      그것은 데이터베이스를 인식 못한다는 것이기 때문에 데이터베이스 서버에 접속을 못하는 문제는 아닐 것 같습니다. use opentutorials;를 통해서 opentutorials가 존재하는지 확인해보시겠어요?
      대화보기
      • cmj88@naver.com
        "Warning: mysqli_connect(): (HY000/1049): Unknown database 'opentutorials' in C:\Bitnami\wampstack-7.1.14-0\apache2\htdocs\process_create.php on line 6" 이란 메시지가 계속뜨고 db를 인식하지 못하는 것 같습니다.. 제가 pc에서 실행시킬 때 localhost:81/process_create.php 이렇게 하고 있는데 81번 포트 지정이 문제가 되나요?
        logs의 error파일에도 동일한 설명만 나오니 답답하네요.
      • 박영수
        windows mysql 접속시에는 mysql 의 bin 디렉토리에서 c:\mySql\mysql.exe -uroot -p111111 ojoj(디비네임) 으로 접속 가능합니다. 디베를 생성하지 않으신 경우는 기본적으로 sys 디비가 있을꺼예요... 유닉스와 윈도우 환경의 차이가 좀 있는데요... export 와 같은 환경 변수를 사용할 경우는 디비명을 생략 할 수가 있는데... 그렇지 않은 경우는 지정을 해 줘야 하는것 같습니다... 윈도우 같은 경우는요... 혹시 도움이 될까 해서 몇 글자 적습니다...
      • webster
        합니다 -> 갑니다
      • webster
        php초보님, 혹시 에러 해결하셨나요? 이미 해결하셨다면 축하드리고요!ㅎㅎ
        아니라면 에러코드에 나온대로
        process_create.php파일의 6번째 줄과, 16번째 줄을 한번 더 살펴보심이 좋을것같아요.

        제 생각에는
        1. egoing님과 다른 pw를 사용하고 계신데, 코드를 그대로 가져다쓰셔서 비밀번호가 불일치하는지,
        2. 만들어 두신 topic table, column의 자료형은 적잘하게 지정되어 있는지 등을 살펴보세요~

        많으 에러가 아주 사소한 오타때문에 발생하기도 하니, 에러가 없나도 한번 주의깊게 살펴보시면 좋을것같습니다.

        같이 공부해나가는 학생입장에서 좌절하여 앞으로 못나아가실까봐 조금은 도움이 될까 싶어서 댓글남기고합니다.
      • php초보
        sucess는 뜨는데, mysql에 데이터가 저장되지 않네요,,,

        Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\Bitnami\wampstack-7.1.12-0\apache2\htdocs\WEB3\process_create.php on line 6

        Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-7.1.12-0\apache2\htdocs\WEB3\process_create.php on line 16

        라는 에러 코드가 뜨는데 말씀하신데로 다 했는데 Boolean이 뜨는 이유는 뭘까요,,
      버전 관리
      egoing
      현재 버전
      선택 버전
      graphittie 자세히 보기