웹 애플리케이션 만들기

MySQL 실습

MySQL 실습 1 

실습환경으로 codeanywhere를 쓰고 계신 분은 아래 영상의 13:30 즈음의 영상의 코드를 다음와 같이 바꿔서 사용하시면 됩니다. 비밀번호를 지정하지 않으면 됩니다. $conn = mysqli_connect('localhost', 'root', '');

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. Changhyun Choi
    codeanywhere로 학습 중인데 localhost는 안되서 생성된 url로 변경해서 지금까지 따라 왔는데 이번 수업 index.php로 작성한 화면에서는 왼쪽의 링크(http://code-night-changhyunchoe516971.codeanyapp.com......d=1)를 클릭하면 not found 에러가 뜨네요.

    Not Found

    The requested URL /index.php was not found on this server.

    Apache/2.4.7 (Ubuntu) Server at code-night-changhyunchoe516971.codeanyapp.com Port 80

    이건 어떻게 해결 하나요?
  2. 백곰몬
    와 정말 감사합니다 ㅠㅠ 시금치님 덕분에 막힌 부분 해결 했습니다 맥으로 하고 있는데 저 같이 오류 뜨시는 분들은 시금치님이 말하신대로 하면 됩니다!
    밑에 시금치님이 올려주신 댓글 보시면 되요!!
    대화보기
    • Bank in
      저한테는 유익한 내용이 많았습니다.
      감사합니다.
      댓글올리기 버튼 클릭 -> db 입력 --> redirection ^^
    • 손태무
      크롬브라우저에서 js 무한로딩 되면서 리소스 엄청 먹습니다...
      확인 부탁드립니다 ㅜㅜ
    • 신정숙
      데이타베이스 이론부터 버퍼링이 아주 심해서 시간이 두배로 드네요..
      듣는 사람이 많아서 그런가요 왜그러지 ㅠ
    • 데이터 베이스 입력을 잘못해서 지우고 수정해보는데 애먹었네요 그래도 이렇게 넘어져 가며 배우고 있습니다.
    • scarleaf
      야호~
    • 핵허
      process.php 마지막줄 localhost를 localhost:8080으로 바꿔보세요~
      대화보기
      • 수업 잘 듣고 있습니다 감사합니다

        오늘 수업 따라해 보았는데
        Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\Bitnami\wampstack-5.4.40-0\apache2\htdocs\index.php on line 35
        라는 에러가 계속 발생하네요 ㅠ 오타가 있는지도 몇번 보았고 복붙도 해보았는데 여전해요

        데이터베이스에도 제대로 입력 되어있던데 무엇이 문제인걸까요 ㅠㅠ
      • 쉽고 재밌어요 ㅎㅎㅎㅎㅎㅎ
      • Hoon Young Park
        만약에 3306으로 입력을 해도 안되는 분들은 비트나미의 *manager-windows.exe*로들어가셔서
        *mysql database*의 *cofigure*을 들어가시면* 포트 번호*가 나와있습니다. 그걸 입력을 하셔야 되는분들도 계실겁니다.

        +추가 manager-windows.exe이 파일은 C드라이브의 비트나미폴더의 warmpstack-5.머시기에 있습니다.

        +추가 전 참고로 포트번호가 3307이었습니다.
      • 큐큐
        갑자기 localhost/index.php localhost 자체 사이트가 안들어가지는데 왜이러는거죠 ?

        Refused to connect 되네요 ..
      • 홍예진
        codeanywhere로 실습하고 있습니다.
        $conn=mysqli_connect('localhost', 'host', '');
        위와 같이 작성하였으나 로그에서 아래와 같이 에러가 발생합니다.
        Warning: mysqli_connect(): (28000/1045): Access denied for user 'host'@'localhost' (using password: NO) in /home/cabox/workspace/index.php on line 2

        왜 그런지 알 수 알려주실 분이 계실까요?
      • 핵허
        하 실습2에서 오류코드가 4줄이나뜨네요 ㄷㄷ

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

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

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

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


        Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\Bitnami\wampstack-7.1.4-0\apache2\htdocs\index.php on line 10
      • skekogo
        오늘 수업이 가장 어려웠던 것 같아요.ㅠㅠ 잘 알려주셔서 감사합니다!
      • 최진혁
        error log의 파일 크기가 830MB정도가 되어 파일이 열리지 않는데

        error log의 크기가 이고잉 선생님것의 크기와 너무 다른데 이건 어떤 문제인가요?
      • 쓰기 버튼을 이용해 DB 에 추가된 자료가,
        첫 화면에 바로바로 적용되어 목록이 늘어나는 것을 보고 "심쿵" 했습니다.

        감사합니다!
      • bombaramir
        제가 위치 설명 넣는 걸 깜빡 했네요 ;; 죄송합니다.
        저는 저 index.php 코드 부분을 '쓰기' 부분 옆에 위치시키고 싶어서 '쓰기' 코드부분 밑에 추가했었습니다. ^^
        대화보기
        • Codeanywhere로 실습 중인데 이런 메시지가 뜹니다.
          Notice: Undefined index: description in /home/cabox/workspace/php/process.php on line 4

          INDEX로 돌아와 리스트 항목에 실습한 데이터(title)는 정상적으로 추가되어있는 반면 본문데이터(description)만 보이지 않는 걸 보면 description 컬럼에 저도 모르는 제약이 걸려있는 거 같습니다.

          또는 올려주신 코드를 똑같이 붙여보아도 같은 메시지가 뜬다는 점과 아래 질문리스트에서 저랑 같은 문제를 질문하신 분도 codeanywhere에서 실습 중이시라는 점을 봤을 때 코딩 문제라기 보다 codeanywhere의 문제 같다는 짐작도 들구요.....

          혹시 확인 가능하시다면 답변 기다려봅니다~ ^^
        • 스타일C
          mysql어렵네요. 다시 복습해야할거 같아요.수고하셨습니다
        • 김하늘
          3.html에서 제출버튼을 눌러도 아무 반응 이없는데 저만 그런건가요?
        • myspl 자체가 안뜨네요 ㅜㅜ 어려웠어용 ㅠㅍ
        • 박찬울
          안녕하세요 ^^
          저도 동일한 문제로 수업을 중간에 끊는 아픔을 겪고 한시간을 해매다 해결방법을 찾아 공유드립니다.

          ■요약

          >>문제상황 : Call to undefined function mysqli_connect() in C:\(이하경로)
          >>해결방법 : php.ini 파일의 내용을 아래와 같이 두 문장 변경 후 아파치 서버의 재실행

          ; extension_dir = "./"

          extension_dir = "C:\Bitnami\wampstack-5.6.30-2\php\ext"


          ; extension=php_mysqli.dll

          extension=php_mysqli.dll


          ■세부설명

          >>문제상황 :
          Fatal error: Call to undefined function mysqli_connect() in C:\Bitnami\wampstack-5.6.30-2\apache2\htdocs\PHP\index0622.php on line 2

          >>해결방법 :
          PHP 폴더의 php.ini 파일 속의 다음 두 문장을 설명에 따라 변경해주시면 됩니다.

          ⓐ extension_dir = "C:\Bitnami\wampstack-5.6.30-2\php\ext"
          - 본인의 PC에 php가 설치된 폴더를 찾고 경로를 확인합니다. C:\Bitnami\wampstack-5.6.30-2\php\ext
          - php.ini 폴더의 ;extension_dir = "./" 인 부분을 ext 폴더를 지정하는 경로로 위와 같이 변경해줍니다.
          - 문장 맨 앞의 세미콜론을 지워줍니다.

          ⓑ extension=php_mysqli.dll
          - 위와 같은 문장을 찾습니다.
          - 문장 맨 앞의 세미콜론을 지워줍니다.

          위와 같이 php.ini 파일을 변경 후 아파치 서버를 Restart 하시면 정상동작이 되실겁니다.
          물론 phpmyadmin 도 동작 되는 것을 확인하였습니다.
          대화보기
          • qudwn
            완료!
          • hwiyoungk
            bombaramir님 올리신 코드 잘 봤습니다.

            코드 중에 첫번째 코드인

            ===================================================================
            <?php
            if (empty($_GET['id']) === false){
            echo "<a href='http://localhost/php/delete.php?id=".$_GET['id']."'>삭제</a>";
            }
            ?>
            =====================================================================

            3번째 줄 ...echo~~~~부분....을 index.php의 <article>~</article> 태그 내의 php If문 속에 넣으면 되는거죠?
            (제일 아랫줄에 넣음)

            그렇게 했더니 되긴 되더군요. 모양새를 좀 보기 좋게 하기 위해서 기존 if문 내 실행문과 '삭제 버튼 추가' 구문 사이에
            echo '<br />';를 두번 넣었습니다.
            대화보기
            • 치우천황
              강의잘 들었습니다.
              php와 mysql 연동하는걸 새롭게 알았습니다.
            • 이희태
              6월 22일 MySQL 실습 수강완료하였습니다 수련시간에 한번더 들으면서 다시해봐야겠습니다 ㅠㅠ 버겁네요 ㅠㅠ
            • 시금치
              저도 문제가 많아서 많이 헤매다가 해결해서 참고하시라고 글 올려 봅니다.

              * 에러 해결방법
              1. 비밀번호는 ""로 감싼다.
              2. localhost뒤에 :3306을 추가한다.
              (반대로 localhost 에러메시지 뒤에 localhost:3306:3306이 중복해서 들어가 있을 경우, :3306은 삭제한다.)
              3. 웹서버와 데이터베이스서버를 재시작 해본다.
            • alan
              감사합니다. 열심히 배우고 있습니다.
              이번 강의까지 마무리 했는데요 문제가 발생했습니다.

              write.php 화면에서 title, author, description 작성 후 제출할때 description의 글이 짧으면 정상적으로 작동되나, 긴 글 (예를들면 wikipedia에서 array 항목을 모두 카피한 내용)을 작성하면 화면에 아무것도 표시되지 않고, db에도 등록되지 않는 경우가 발생합니다. 이런 문제의 경우 어디가 잘못인 것인지 알 수 있는 방법이 있나요?
            • Lydia
              감사합니다~ DB에 자료가 추가되는게 너무 신기하네요! 다음 수업도 너무 기대가 됩니다^^
            • sang cheol
              codeanywhere를 사용하여 진행하고 있습니다.
              현재 MySQL 을 사용하는데, 아래와 같이 에러가 납니다.

              Warning: mysqli_connect(): (HY000/2005): Unknown MySQL server host 'http://sangleecode-sangleemobile495557.codeanyapp.com' (74) in /home/cabox/workspace/index.php on line 2

              뭐가 문제인지 잘 모르겠어요.. 결국 host를 찾지 못한 거 같은데요..
            • Gae Hwan
              Fatal error: Call to undefined function mysqli_connect() in C:\Bitnami\wampstack-5.6.30-2\apache2\htdocs\PHP\index0622.php on line 2

              $conn = mysqli_connect('localhost:3306', 'root', '(초기 비밀번호)');
              라고 분명히 했는데mysqli_connect가 정의되지 않은 함수라고 나오네요 ㄷㄷ
              다른 거 시도하면서 계속 했는데도 안되네요...localhost 뒤에 아무것도 안 넣어보기도 했고 초기 비밀번호는 분명히 앞에 MySQL 이론 수업 땐 잘 써먹었는데...

              Manage Servers 있는 창에서 Open phpMyAdmin 들어갔더니 mysqli 확장기능이 설치되지 않았다고 나오는데 이거 설치해야 하나요? 처음 설치할 때 별 문제 없었는데 이상하네요...

              php.ini에서 해결해야 하는 문제인가 싶기도 한데 괜히 건드리면 안 될 것 같고요...

              아님 저는 PHP 폴더 내의 index0622.php 파일로 했는데 이게 MySQL에서 했던 거랑 안맞아서 그런 건지...

              이고잉님 꺼 그대로 카피 페이스트 한 다음에 비번만 바꿔서 내도 똑같은 게 뜹니다...정말 이거 bitnami 지우고 다시 설치해야하는지까지 고민되네요
            • bombaramir
              패스워드 입력 부분을 초기 비트나미 설치할때 입력한 패스워드로 입력해보세요, 패스워드 오류 같습니다.
              대화보기
              • 김영일
                Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\Bitnami\wampstack-5.6.30-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.30-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.30-2\apache2\htdocs\index.php on line 4

                이런 에러 메세지가 계속 나오는데..왜그러는 걸까요..ㅠㅠ
              • bombaramir
                삭제 기능을 만드는 것도 쉽지는 않네요. 몇시간 동안 끙끙 대면서 겨우 완성했습니다. 혹시나 저와 같은 어려움을 겪고 계신 분이 있으면 참조하시면 좋을 것 같아서 코드를 적습니다.

                index.php 에서,

                <?php
                if (empty($_GET['id']) === false){
                echo "<a href='http://localhost/php/delete.php?id=".$_GET['id']."'>삭제</a>";
                }
                ?>

                새로 생성한 delete.php 에서,

                <?php
                $conn = mysqli_connect('localhost','root','password');
                mysqli_select_db($conn, 'opentutorials');
                $del = "delete from topic where id=".$_GET['id'];
                $result = mysqli_query($conn, $del);
                header('location: http://localhost......hp');
                ?>

                더욱 간단한 방법도 많겠지만, 이 방법이라도 도움이 될 수 있으면 좋겠습니다.
              • 잘 봤습니다. 대단한 걸 알아갑니다. 쉬워질 때까지 열심히!
              • 허영재
                수시로 발생하는 오탈자 및 (큰,작은)따옴표, 컴마와 닷 등이 헷갈리기 시작하니...

                강의 초기 이고잉님이 말한

                '지옥을 경험하시게 될겁니다'

                라는 멘트의 의미를 짐작할 수 있을 것 같아요~
              • Kim Sangil
                저기 비밀번호에 어퍼스트로피를 넣으니까 되는군요... 감사합니다
                대화보기
                • 이 정
                  저도 이거 에러 떠요ㅠㅠ젭알
                  대화보기
                  • 유용욱
                    $conn = mysqli_connect("localhost:8080","root","111111");
                    처음에 이렇게 썻었는데 댓글을 보고 mysql이 깔린 포트를 입력했더니
                    다행히 잘 되네요
                    $conn = mysqli_connect("localhost:3306","root","111111");
                    대화보기
                    • 이주영
                      Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\Bitnami\wampstack-5.6.30-3\apache2\htdocs\index.php on line 24

                      이 에러가 뜨는데 해결 방법을 모르겠습니다..
                      아래 글들 읽어봤는데도 못 찾겠어요.
                      혹시 해결 방법을 아시는 분 있으시면 가르침 부탁 드립니다.
                    • Kim Sangil
                      뭔가 꼬여도 단단히 꼬였다... 화이트 블랙은 작동 안되고...


                      Notice: Use of undefined constant ******* - assumed '********' in C:\Bitnami\wampstack-5.6.30-3\apache2\htdocs\index.php on line 2

                      이러면서 비밀번호 잘못됬다고 나오면서도 db에는 등록 되고........
                    • 코딩하는오징어
                      삭제도 한번 구현해 보았습니다~
                    • 코딩하는오징어
                      오 감사합니다. 사랑합니다
                      대화보기
                      • 웹초보
                        코딩하는 오징어님

                        echo "<li><a href = 'http://localhost/index.php?id=".$row['id']."'>".$row['title']."</a></li>"."\n";

                        로 수정하시면 잘 될겁니다.

                        따옴표 안에 묶여있는 내용들만 복사해서 html 페이지에 붙여넣기 하신 다음 문법을 확인하시면 오류를 찾기 쉽습니다.

                        문의하신 echo "<li><a href = 'http://localhost/index.php?id='"."$row['id']".">".$row['title']."</a></li>"."\n"; 코드에서 큰 따옴표 안의 내용들만 복사해보면(큰 따옴표로 지정한 이유는 위의 코드가 큰 따옴표를 "~~~"."~~~"의 형태로 문장의 구분자로 사용하여 문자가 구분되어 있기 때문입니다. )

                        <li><a href = 'http://localhost/index.php?id='$row['id']>$row['title']</a></li>\n
                        가 되어 $row['id'] 앞에 작은 따옴표가 들어갔기 때문에 오류가 발생한 것입니다.
                      • 코딩하는오징어
                        echo '<li><a href = "http://localhost/index.php?id='.$row['id'].'">'.$row['title']."</a></li>"."\n"; 이것을
                        echo "<li><a href = 'http://localhost/index.php?id='"."$row['id']".">".$row['title']."</a></li>"."\n"; 이렇게하면 안되는 이유는 뭔가요? 작은따옴표와 큰따옴표에 대해서 좀 헷갈리네요
                      • orez
                        감사합니다. 어려운 부분들이 있는데, 반복적으로 학습하도록 하겠습니다.
                      • 정미정
                        어려웠지만!! 강의 잘 들었습니다!!
                      • namimoon
                        header('Location: http://localhost......hp'); 몰랐던 구문이었네요
                      • lunamoth
                        $sql = "INSERT INTO topic (title,description,author,created) VALUES('".$_POST['title']."', '".$_POST['description']."', '".$_POST['author']."', now())";

                        이 부분에서 따옴표가 하나 더 들어가서 안됐던것 같네요; 이젠 잘 됩니다
                        대화보기
                        버전 관리
                        egoing
                        현재 버전
                        선택 버전
                        graphittie 자세히 보기