웹 애플리케이션 만들기

MySQL 실습

MySQL 실습 1 

MySQL 실습 2

MySQL 실습 3

MySQL 실습 4

MySQL 실습 5

index.php

<?php
$conn = mysqli_connect("localhost", "root", 111111);
mysqli_select_db($conn, "opentutorials");
$result = mysqli_query($conn, "SELECT * FROM topic");
?>
<!DOCTYPE html>
<html>
<head>
     <meta charset="utf-8">
  <link rel="stylesheet" type="text/css" href="http://localhost/style.css">
</head>
<body id="target">
	<header>
    <img src="https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/course/94.png" alt="생활코딩">
		<h1><a href="http://localhost/index.php">JavaScript</a></h1>
  </header>
	<nav>
		<ol>
    <?php
    while( $row = mysqli_fetch_assoc($result)){
      echo '<li><a href="http://localhost/index.php?id='.$row['id'].'">'.$row['title'].'</a></li>'."\n";
    }
    ?>
		</ol>
	</nav>
  <div id="control">
    <input type="button" value="white" onclick="document.getElementById('target').className='white'"/>
    <input type="button" value="black" onclick="document.getElementById('target').className='black'" />
    <a href="http://localhost/write.php">쓰기</a>
  </div>
  <article>
  <?php
  if(empty($_GET['id']) === false ) {
      $sql = 'SELECT * FROM topic WHERE id='.$_GET['id'];
      $result = mysqli_query($conn, $sql);
      $row = mysqli_fetch_assoc($result);
      echo '<h2>'.$row['title'].'</h2>';
      echo $row['description'];
  }
  ?>
  </article>
</body>
</html>

 write.php

<?php
$conn = mysqli_connect("localhost", "root", 111111);
mysqli_select_db($conn, "opentutorials");
$result = mysqli_query($conn, "SELECT * FROM topic");
?>
<!DOCTYPE html>
<html>
<head>
     <meta charset="utf-8">
  <link rel="stylesheet" type="text/css" href="http://localhost/style.css">
</head>
<body id="target">
	<header>
    <img src="https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/course/94.png" alt="생활코딩">
		<h1><a href="http://localhost/index.php">JavaScript</a></h1>
  </header>
	<nav>
		<ol>
    <?php
    while( $row = mysqli_fetch_assoc($result)){
      echo '<li><a href="http://localhost/index.php?id='.$row['id'].'">'.$row['title'].'</a></li>'."\n";
    }
    ?>
		</ol>
	</nav>
  <div id="control">
    <input type="button" value="white" onclick="document.getElementById('target').className='white'"/>
    <input type="button" value="black" onclick="document.getElementById('target').className='black'" />
    <a href="http://localhost/write.php">쓰기</a>
  </div>
  <article>
    <form action="process.php" method="post">
      <p>
        제목 : <input type="text" name="title">
      </p>
      <p>
        작성자 : <input type="text" name="author">
      </p>
      <p>
        본문 : <textarea name="description"></textarea>
      </p>
      <input type="submit" name="name">
    </form>
  </article>
</body>
</html>

process.php 

<?php
$conn = mysqli_connect("localhost", "root", 111111);
mysqli_select_db($conn, "opentutorials");
$sql = "INSERT INTO topic (title,description,author,created) VALUES('".$_POST['title']."', '".$_POST['description']."', '".$_POST['author']."', now())";
$result = mysqli_query($conn, $sql);
header('Location: http://localhost/index.php');
?>

style.css

body.white{
  background-color:white;
  color:black;
}
body.black{
  background-color:black;
  color:white;
}

header{
  border-bottom:1px solid gray;
  padding:20px;
}
nav {
  border-right:1px solid gray;
  width:200px;
  height:600px;
  float:left;
}
nav ol{
  list-style:none;
  padding:0;
}
article{
  float:left;
  padding:20px;
  width:500px;
}
#control{
  float:right;
}
header img{
  float:right;
  height:100px;
}

소스코드

github

댓글

댓글 본문
작성자
비밀번호
  1. 나홀로문도리
    아~~~ 어떻게 어떻게 해서 여기까지 잘 들었습니다!
    끝까지 가보겠습니다~~~ 좋은 강의 정말 감사해요~~~^^*
  2. 박인우
    쌍따옴표와 따옴표의 차이는 무엇인가요?

    if(empty($_GET['id'])===false){
    $sql='SELECT * FROM topic WHERE id='.$_GET['id'];
    $result=mysqli_query($conn, $sql);
    $row=mysqli_fetch_assoc($result);
    echo '<h2>'.$row['title'].'</h2>';
    echo $row['description'];

    여기서는 따옴표를 하나 쌍따옴표를 하나 모두 작동합니다만

    $sql="INSERT INTO topic (title, description, author, created) VALUES('".$_POST['title']."','".$_POST['description']."','".$_POST['author']."',now())";
    echo $sql;

    여기서는 엄청나게 헷갈립니다.....

    sql문 양쪽에는 무조건 쌍따옴표라고 알고 있으면 될까요?
  3. 이면
    어떤 경우에 "를 쓰고 '를 쓰는지. 그레이브 엑센트는 언제 쓰는건지 정리가 잘 안됩니다..
  4. 김하나
    자꾸 오류가나서 찾다보니 깨달음 띄어쓰기의중요성!!
    $result = mysqli_query($conn,"SELECT*FROM topic")or die(mysqli_error($conn));

    SELECT*FROM topic 토픽앞에 띄어쓰기안하면 에러남 ㅠㅠ 감사합니다 이고잉님^^
  5. 이병정
    비밀번호에는 "******" 쌍따옴표를 넣어야 작동합니다.^^);;
  6. 블로그 검색하다가 찾았습니다
    http://blog.naver.com......004
    대화보기
    • <?php
      $conn = mysqli_connect("localhost", "root", "****");
      mysqli_select_db($conn, "open161116_MySQL");
      $result = mysqli_query($conn, "SELECT * FROM topic");
      $row = mysqli_fetch_assoc($result);
      echo $row['id'];
      echo $row['title'];

      echo '<br/>';
      ?>

      Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\Bitnami\wampstack-5.6.27-0\apache2\htdocs\161116_MySQL\index.php on line 5

      $row = mysqli_fetch_assoc($result); 여기서 어떤것이 문제인건가요......?
    • 화이팅
      mysql 비번 영어로 설정해놓으셨다면

      111111 -> '영어' (작은따옴표)로 사용해보세요.

      한참을 고생하다 되네요.
    • ㅠㅠㅠㅠ
      Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\Bitnami\wampstack-5.6.27-0\apache2\htdocs\index.php on line 5

      $row= mysqli_fetch_assoc($result);
      echo $row['id'];

      여기서 에러가나는데 수정방법좀 가르쳐주세요....
    • bnbn888@naver.com
      PHP Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\\Bitnami\\wampstack-5.6.27-0\\apache2\\htdocs\\php\\2.php on line 5

      이 에러의 해결법은 무엇인가요..?
    • 안녕겨울
      어렵네용
    • hyoone033@gmail.com
      아 점점 힘들어집니다...ㅎ
    • 강의 잘듣고 있습니다.정말 감사합니다.
      process.php를 새로 고침 했는데, 같은 데이터 한줄이 더 생기더군요.
      그래서 데이터 삭제 하는법 찾아 봤습니다.
      커멘드 창에서
      DELETE FROM 테이블명 WHERE 필드명 = '조건';

      라고 하면 삭제 됩니다.

      Ex) DELETE FROM topic WHERE id = '6';
      이렇게 하면 위에 있는 loop 가 삭제 되겠지요...?

      그런데... 커멘드 창이 아닌 코딩으로 해결할수 있는 방법이 있나요..?
      예를 들어서 댓글 올리는 창처럼 수정/ 삭제 가능한 창으로 말이죠.. 어디서 배우면 될까요?? ㅎ
    • jinlee
      이런 error가 뜨는데 어떻게 해결해야할지 도통 감이 안오네요.
      스택오버 플로우 찾았더니 set global max_allowed_packet 이런 명령어를 조정하라그래서 조정했는데도 해결이 안돼요.

      Warning: mysqli_connect(): MySQL server has gone away in C:\Bitnami\wampstack-5.6.26-2\apache2\htdocs\index.php on line 2

      Warning: mysqli_connect(): Error while reading greeting packet. PID=11124 in C:\Bitnami\wampstack-5.6.26-2\apache2\htdocs\index.php on line 2

      Warning: mysqli_connect(): (HY000/2006): MySQL server has gone away in C:\Bitnami\wampstack-5.6.26-2\apache2\htdocs\index.php on line 2

      Warning: mysqli_select_db() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.6.26-2\apache2\htdocs\index.php on line 3

      Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.6.26-2\apache2\htdocs\index.php on line 4
    • 맹세열
      해결되셨다니 다행이네요! 화이팅입니다~
      대화보기
      • 임지호
        감사합니다 덕분에 문제 잘해결했습니다 ㅎㅎ 복받으세요~
        대화보기
        • 활화산
          구경하고 넘어 갑니다
        • 맹세열
          쿼리문이 제대로 수행안된거 같은대용? 32~35번 라인 코드도 있으면 보기 편할거 같은데ㅠ 없어서 로그로만 짐작해보자면 쿼리문 쓰실때 띄워쓰기가 제대로 되었는지 한번 확인해보세요!
          대화보기
          • 임지호
            Notice: Undefined index: id in C:\Bitnami\wampstack-5.6.25-0\apache2\htdocs\php\index.php on line 32

            Notice: Undefined index: id in C:\Bitnami\wampstack-5.6.25-0\apache2\htdocs\php\index.php on line 33

            Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\Bitnami\wampstack-5.6.25-0\apache2\htdocs\php\index.php on line 35

            뭐가 문제일까요 ㅠㅠ
          • 히스토
            [에러 로그] 접속이 거절되었습니다
            Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\Bitnami\wampstack-5.6.26-2\apache2\htdocs\index.php on line 2

            [해결법] 비밀번호를 작은 또는 큰 따음표로 묶어주세요.
            $conn=mysqli_connect("localhost","root",123456);
            =>
            $conn=mysqli_connect("localhost","root","123456");
          • Hongseon Kim
            설치시 비밀번호에 영어소문자가 들어간 문제 해결 방법입니다.
            cmd 실행하고

            C:\Bitnami\wampstack-5.6.26-2\mysql\bin/mysqladmin -p -u root password 111111

            입력하면(앞부분은 mysqladmin 파일의 주소입니다.) 비밀번호 입력창이 나옵니다.
            거기에 기존 비밀번호 입력하면 패스워드가 111111로 변경됩니다.

            그리고 mysql 서버를 restart 하면 제대로 작동합니다.
          • 저도 같은 현상이 있어 비밀번호 변경없이 해결했습니다.

            $conn = mysqli_connect('localhost','root','232323','opentutorials','3307') 으로 해보세요.

            매게변수로 "DB이름"과 "포트번호"를 넣어 주었습니다.

            저같은 경우는 기존 mysql이 설치되어 있어 bitnami MySQL의 경우 port가 3307로 설정되었습니다.

            DECIMO님도 확인해보세요.
            (포트번호는 bitnami WAMP stack managet tool에서 MySQL configure에서 확인할 수 있습니다)

            아래 글에서 mysqli의 기본port가 3306이라면 connect시 port설정을 해주면 되겠지요...

            잘 됐음 좋겠네요 ㅎㅎ
            대화보기
            • DECIMO
              ㅠㅠ 어엉
              저도 똑같은 현상이 나타났어요. 그래서 님 댓글보고 CMD창에서 비번도 바꾸어 봤는데요. ㅜㅜ 어엉엉 그래도 똑같은 에러가 뜨네요. 이거 어쩜 좋은지.....

              원래의 MySQL 비밀번호가 111111이였는데 제가 232323으로 바꾸었습니다. 하지만 똑같은 에러가 뜨고 있어요

              Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\Bitnami\wampstack-5.6.26-1\apache2\htdocs\index.php on line 2

              Warning: mysqli_select_db() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.6.26-1\apache2\htdocs\index.php on line 3

              Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.6.26-1\apache2\htdocs\index.php on line 4

              고수님들~ 이거 어떻게 해야하는걸까요??
              대화보기
              • egoing
                Bitnami mysql password change로 검색 한번 해보셔요~
                대화보기
                • 정훈
                  선생님! 좋은 강의 항상 감사드립니다.
                  질문이 있어 댓글 올립니다.
                  제가 Bitnami 설치할 때 패스워드에 영어소문자를 포함시켜 놓아서,
                  위의 예제 실행 시에 페이지에 에러문자가 뜨는데요,
                  없앨 수 있는 방법이 있을까요?..
                  아니면 bitnami를 새로 설치해야 할까요?
                  답변 주시면 감사하겠습니다.
                • 2016/9/23 완료!
                • html어려워
                  OMG!!!!

                  감사합니다 1달만에 해결됬네요 엉엉 ㅠㅠ
                  대화보기
                  • gaf3119
                    세미콜론 빠진거 추가요.
                    대화보기
                    • tinybit
                      한달전에 하신 질문이신데 혹시나 해서 남겨봅니다. 저는 에러 로그파일을 한번씩 내용을 지우고 있어요. 이미 확인이 끝난 에러는 필요없으니까요. 내용은 삭제하셔도 문제없어요. 에러 로그파일이라는것 자체가 에러가 발생했을때 그 파일의 마지막에 내용을 추가하는것이니까 내용을 삭제하시면 에러가 발생했을때 다시 첫줄부터 새로운 에러내용이 추가된답니다.
                      대화보기
                      • tinybit
                        저는 비밀번호에 ""를 붙이니까 111111이 아닌데도 잘되었어요.
                        $conn = mysqli_connect("localhost","root","testpassword1");
                        혹시나해서 적어둡니다.
                        대화보기
                        • tinybit
                          $result = mysqli_query(SELECT * FROM topic)
                          -> $result = mysqli_query($conn, "SELECT * FROM topic");
                          윗쪽이 html어려워님의 소스이고 이고잉님 소스는 아래와같습니다.
                          먼저 $conn이 빠져있고, 두번째로 sql쿼리에 ""가없네요. 한번 아래와같이 바꿔서 해보시겠어요?
                          대화보기
                          • html어려워
                            네..ㅠㅠ 해보니 비번 문제는 아닌거 같구(cmd로 들어가면 됐으니까) 큰따옴표 작은따옴표 둘다 해봤는데 안되더군요..ㅠㅜ
                            대화보기
                            • 혹시..비번이랑 SELECT * FROM topic에 따옴표해서 해보셨어요?
                              대화보기
                              • html어려워
                                Parse error: syntax error, unexpected 'topic' (T_STRING) in C:\Bitnami\wampstack-5.6.24-0\apache2\htdocs\index.php on line 4

                                이거 뭐죠? unexpected string이면 topic이 여기에 나올수가 없단 얘긴데 php작성은 이고잉님이 말씀하신대로
                                <?php
                                $conn = mysqli_connect("localhost", "root", mrytcloud);
                                mysqli_select_db($conn,'opentutorials');
                                $result = mysqli_query(SELECT * FROM topic)
                                $row = mysqli_fetch_assoc($result);
                                echo $row['title']
                                ?>
                                일케 썼거든요
                                cmd로 table들어가서 topic있는것도 확인했구요 뭐죠?

                                ....
                              • 오늘 복습다시했습니다.
                                php파일로 데이타를 추가할 수 있고 바로 웹에 반영되게 할수 있다는 것이 놀랍네요.
                              • 감사합니다! 지금 보니 mysql에서 바라보는 포트와 mysqli에서 바라보는 포트 번호가 달랐군요!
                                대화보기
                                • 부엉이엉엉
                                  완전 비전공자 비관련자 인데 너무 재밌게 잘듣고 있습니다! 감사합니다 ㅠㅠ

                                  궁금증이 하나 생겨서 질문드립니다.
                                  속성에 이름을 붙힐때 id, class, name 등등을 쓰던데
                                  쓰임이 비슷해 보여서요/
                                  쓰임이 어떻게 다른지요 ?
                                • Code.Math
                                  감사합니다 ~~!!
                                • 160814
                                  팔님 감사합니다 ㅠㅠ 실습 2번 어렵네요
                                • 엉엉엉ㅇ엉
                                  1 <?php
                                  2 $conn = mysqli_connect("localhost", "root",030528);
                                  3 mysqli_select_db($conn, "opentutorials");
                                  4 $result = mysqli_query($conn, "SELECT * FROM topic");
                                  5 ?>
                                  이렇게 써놨는데 cmd들어가서 030528이라고쓰면 Welcome to the MySQL monitor. 이라고 제대로 패스워드입력한게 맞는데도 불구하고 찾아보니 Access denied for user 'root'@'localhost' (using password: YES) 이 문구가 비밀번호 오류라고 뜨는거였더라고요... 비밀번호가 맞는데 자꾸 틀리다고하니 제가 어떻게 할 도리가 없어서 또
                                  찾아보니 맞는데도 틀리게 나오는 경우가 있어서 비밀번호를 바꾸기도 한다고 하더라고요 그래서 cdm으로 MySQL실행해서 비밀번호를 111111로 바꾸었더니 제대로 오류안뜨고 잘 되더라구요!!
                                  혹시나 저 처럼 비밀번호 제대로했는데도 비밀번호 오류라고 뜨는 사람들이 있을까해서 비밀번호 수정하는 방법 적어둘게요!

                                  cdm 들어가서
                                  C:\Users\user>cd c:\Bitnami\wampstack-5.5.38-0\mysql\bin
                                  mysql -hlocalhost –uroot -p

                                  패스워드 나오면 기존 패스워드로 들어가주세요
                                  mysql> use MySQL
                                  mysql> UPDATE user SET Password=PASSWORD(새로운 비밀번호입력') where USER='root';
                                  mysql> FLUSH PRIVILEGES;

                                  그리고 ctrl+c 눌러서 끝냈다가 다시 접속해서 비밀번호가 바뀌었는지 확인해주세요!
                                  대화보기
                                  • 1 <?php
                                    2 $conn = mysqli_connect("localhost", "root", 030528);
                                    3 mysqli_select_db($conn, "opentutorials");
                                    4 $result = mysqli_query($conn, "SELECT * FROM topic");
                                    5 ?>

                                    이렇게 했는데

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

                                    Warning: mysqli_select_db() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.5.38-0\apache2\htdocs\index.php on line 3

                                    Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.5.38-0\apache2\htdocs\index.php on line 4

                                    무엇때문일까요?ㅠ 따움표나 콤마같은거 틀렸을까해서 복붙한건데도 안되네요...ㅠ
                                    php.ini에 들어가서 포트를 바꾸라고 하는 덧글도 있어서 (잘 이해는 못했지만 ) mysqli.default_port = 3306 이걸아파치 포트번호랑 같게 하라는건가해서 8080으로 했는데 mysql은 3306이라 더 잘못된것 같기도하고 바꿔서 리스타트 해도 별다른 변화가 없어서 다시 미궁속으로 ......
                                  • 기현
                                    index.php 파일을 크롬에서 오픈하면 HTTP ERROR 500 이라는 문구만 뜨고 페이지가 안보여요.. 인터넷에찾아보니 서버문제라고하는데 어떻게 해결할 수 있을 까요?
                                  • 라꿍차타
                                    Object를 배워야 나오는 내용이었네요. ㅇㅅㅇ!!
                                    성급한 질문이었습니다~!
                                    대화보기
                                    • 라꿍차타
                                      MySQL 문법 찾다가
                                      printf("Connect failed: %s\n", $mysqli->connect_error);
                                      이런 식의 문법 설명도 있더라구요.

                                      $mysqli다음에 나오는 "->" 이 화살표같은 것의 의미는 뭔가요?;
                                    • Handong Kim
                                      좋은 강의 감사합니다.

                                      한가지 질문이 있습니다. 크롬을 사용하지 않고 사파리 브라우저를 사용해 실습을 진행하고 있는데

                                      form태그를 사용한 3.thml에서 제출 버튼을 누르게 되면 주소가 3.html?로 바뀌고 다시 한번 제출을 해야 3.php로 넘어가게 되는데 그 이유를 알 수 있을까요?
                                    • 차근차근하니까 어려우면서도 쉽게 느껴져요.
                                      드디어 산꼭대기를 넘었네요..
                                      감사합니다.
                                    • Wookiiis
                                      잘 보았습니다. :)
                                    • 이현아
                                      아래 어떤분 말대로 다시 시간걸려도 php처음부터 다시 들었더니 훨씬 이해가 잘갑니다.
                                      그리고 드디어 다시 진도가 나갔어요. 오늘 php실습 3까지 들었습니다. 중간중간 에러난 것은..
                                      콤마를 점으로 했던지.. select를 소문자로 했던지..
                                      암튼 에러도 다 잡고..선생님과 결과가 같아졌는데..
                                      좀 어렵네요.. 데이타 베이스 불러오는 명령문들을 외워야 할것 같은데.. 아직 이해도 완벽히 못했습니다.
                                      다시 복습해야겠어요.
                                      감사합니다!!!
                                    • 차누
                                      수강완료
                                    • 이현아
                                      처음에 아톰에서 에러파일을 열려고 하면 안열리네요.. 용량이 크다고 하는데요..
                                      어찌해야 될까요?
                                      파일탐색기에서 열면 메모장에서 아주 한참만에 떠요.. 떴을때...안에 데이타를 삭제해도 되는 건가요?
                                      아시는 분 누구나 꼭 답변좀 해주세요
                                    버전 관리
                                    egoing
                                    현재 버전
                                    선택 버전
                                    graphittie 자세히 보기