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. Hanyoul Choi
    process_create.php 이후 아래와 id 55, 56번 처럼 2개씩 동시에 DB에 insert 됩니다.
    그리고 $result 부터 주석 처리하면 하나씩 드러가구요...
    어떤부분에 문제가 있는지 한번 봐주세요...
    --------------------------------------------------------------------------------
    <?php
    $conn = mysqli_connect("192.168.105.235","root","test","opentutorials");
    $sql = "INSERT INTO topic (title, description, created) values('{$_POST['title']}','{$_POST['description']}', NOW())";
    mysqli_query($conn, $sql);

    $result = mysqli_query($conn, $sql);
    if($result === false){
    echo '저장하는 과정에서 문제가 생겼습니다. 관리자에게 문의해주세요';
    error_log(mysqli_error($conn));
    } else {
    echo '성공했습니다. <a href="index.php">돌아가기</a>';
    }
    ?>
    ---------------------------------------------------------------------------
    mysql> SELECT * FROM topic;
    +----+--------------+--------------+---------------------+-----------+
    | id | title | description | created | author_id |
    +----+--------------+--------------+---------------------+-----------+
    | 56 | create query | create query | 2018-12-24 16:14:16 | NULL |
    | 55 | create query | create query | 2018-12-24 16:14:16 | NULL |
    | 54 | aaa | aaa is ... | 2018-12-24 16:06:34 | NULL |
    | 53 | MySQL | MySQL is ... | 2018-12-24 15:59:08 | NULL |
    +----+--------------+--------------+---------------------+-----------+
    4 rows in set (0.00 sec)
  2. Sungwoong Pyeon
    저도 port를 81번을 썼는데 opentutorials database가 있음에도 불구하고 비슷한 error가 나서 삭제하고 다시 설치했습니다. 물론 모든 비트나미서버를 삭제해서 지금 PHP서버를 디폴트 포트로 다시 변경했구요.
    대화보기
    • 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 자세히 보기