생활코딩

Coding Everybody

코스 전체목록

닫기

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. 시금치
    저도 문제가 많아서 많이 헤매다가 해결해서 참고하시라고 글 올려 봅니다.

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

    write.php 화면에서 title, author, description 작성 후 제출할때 description의 글이 짧으면 정상적으로 작동되나, 긴 글 (예를들면 wikipedia에서 array 항목을 모두 카피한 내용)을 작성하면 화면에 아무것도 표시되지 않고, db에도 등록되지 않는 경우가 발생합니다. 이런 문제의 경우 어디가 잘못인 것인지 알 수 있는 방법이 있나요?
  3. 감사합니다~ DB에 자료가 추가되는게 너무 신기하네요! 다음 수업도 너무 기대가 됩니다^^
  4. 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를 찾지 못한 거 같은데요..
  5. 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 지우고 다시 설치해야하는지까지 고민되네요
  6. 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())";

              이 부분에서 따옴표가 하나 더 들어가서 안됐던것 같네요; 이젠 잘 됩니다
              대화보기
              • lunamoth
                음 process.php 위 내용하고 똑 같은데 리프레쉬 해도 입력한 글이 업데이트가 안되는군요;
              • 김민성
                잘보았습니다
              • 김민성
                잘보았습니다
              • 질문자
                PHP Warning: mysqli_connect(): php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known in /Applications/mampstack-7.1.4-0/apache2/htdocs/phppre/index.php on line 2

                PHP Warning: mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known in /Applications/mampstack-7.1.4-0/apache2/htdocs/phppre/index.php on line 2

                PHP Warning: mysqli_select_db() expects parameter 1 to be mysqli, boolean given in /Applications/mampstack-7.1.4-0/apache2/htdocs/phppre/index.php on line 4
                [Mon Jun 12 18:25:26.634492 2017] [php7:warn] [pid 23417] [client ::1:57443] PHP Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in /Applications/mampstack-7.1.4-0/apache2/htdocs/phppre/index.php on line 6

                PHP Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in /Applications/mampstack-7.1.4-0/apache2/htdocs/phppre/index.php on line 7


                이건 무슨 문제인가요 고수님들의 도움을 기다립니다.
              • Ian Kim
                크롬 시크릿모드 팁 큰 도움 되었습니다.
                감사합니다.
                대화보기
                • OHOHOH
                  안녕하세요 이고잉님 ^^ 좋은 수업 감사합니다.!

                  혹시 실습1 시작부터 나온 코드들은 기존 수업에서 모두 작성했던 것들인가요?

                  그동안 빠짐없이 수업을 모두 들었는데 저는 저 코드들을 가지고 있지 않네요;

                  아니면 이 수업 전에 따로 작성하신건가요 ㅎㅎ
                • 이한규
                  이고잉님 수업 잘 듣고있습니다~!

                  echo 를 작성할때 문자는 ""을 사용합니다 ==> "문자입력" or '문자입력'

                  1. echo '<li><a href="http://localhost/index.php?id=' <== 여기까지 문자

                  2. $row['id'] <== 이건 변수니까 그냥 쓰시고

                  3. '">' <=== 이건 문자니까 "> 를 '' 으로 감싸준겁니다

                  4. 1~3을 연결할때는 문자와 문자사이에 . 을 찍어주세요

                  5. 1~4을 연결해서 쓰면 다음이 완성됩니다
                  echo '<li><a href="http://localhost/index.php?id='.$row['id'].'">'
                  대화보기
                  • hypnos
                    <?php
                    echo $_POST['title'];
                    echo "<br>";
                    echo $_POST['description'];
                    ?>

                    이렇게 작성했는데

                    Notice: Undefined index: title in /home/cabox/workspace/PHP/3.php on line 2


                    Notice: Undefined index: description in /home/cabox/workspace/PHP/3.php on line 4

                    이런 오류가 뜨네요?
                    코드에브리웨어 환경인데 제가 무엇을 잘못한걸까요...
                  • seetower
                    mysql 실습하면서 멘붕이 오네요. 그전에는 전혀 어렵지 않았는데. 왜 이리 이해가 안되는지..ㅡ.ㅡ;;
                  • Young Chan Kim
                    연관배열(associative array)와 파이썬의 dictionary가 비슷한 개념이네요
                  • 유혀누
                    ㅎㄷㄷ 점점 수준이 높아지는 느낌 잘들었습니다~~
                  • swpheus1@naver.com
                    6/7 완료 점점 흥미진진하네요!
                  • 포기하지말자
                    2017/06/07 완료

                    좋은강의 감사합니다.
                  • seojean
                    강의 정말 잘 듣고 있습니다!
                    그런데 강의 중 제가 놓친것인지는 모르겠지만 궁금한 것이 있는데요,

                    <?php
                    while( $row = mysqli_fetch_assoc($result)){
                    echo '<li><a href="http://localhost/index.php?id='.$row['id'].'">'.$row['title'].'</a></li>'."\n";
                    }
                    ?>

                    여기에서 <li><a>코드에 작은따옴표를 붙이고 온점으로 $row['id']와 이어주는 것은 이 코드가 php가 아닌 html코드라서 그런 것인가요? 만약 그렇다면 php 코드 내 적용되는 모든 다른 html도 작은따옴표로 표시해줘야 하는지 알고 싶습니다!

                    매번 훌륭한 강의 감사 드려요 :)
                  • 나효진
                    완료
                  • rono
                    크롬 개발자도구가 자동으로 자꾸 꺼져버리는데 크게 중요한 부분은 아니지만 해결방법 아시는 분 계실까요~~?
                  • 오류 설명:
                    PHP Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given

                    = "" 이런 큰따옴표가 아니라 ''이런 작은 따옴표로 교체하면 해결될수있습니다.

                    PHP Warning: mysql_fetch_assoc() expects parameter 1 to be resource

                    =오탈자가 있는지 자세하게 보세요 자기도 모르게 오타가 난것일수도 있어요.
                  • Roys Jung
                    php 공부를 막 시작 했는데 재미있네요 ^^
                    connection Warning 뜨시는 분들은 이렇게 해보세요
                    $conn = mysqli_connect("localhost", "root", 비밀번호, "opentutorials", 3307(mysql포드번호));
                    mysqli_select_db($conn, "opentutorials"); 이것은 삭제 하시고요
                  • Seo Yun Seok Tudoistube
                    아톰 에디터에서 소문자로 자동완성해주는거 실행하니까 오류가 나는데 대문자로 바꾸니까 잘됩니다^^;; 감사합니다^____^
                    Undefined variable: _post in
                  • 송재욱
                    완주 완료 !
                  • 이묘
                    저도 이게 궁금했는데 혹시 알려주실 수 있나요? 답변댓글이 지워졌는지 안보이네요 ㅠㅠ
                    대화보기
                    • 진리의산탄
                      혹시 MySQL이 아닌, MariaDB를 사용하면서 수업을 들어도 지장이 없는지 궁금합니다.
                    • 새벽빛
                      혹시 저와 같은 어려움을 겪으시는 분들에게 도움을 주기 위해 글을 남깁니다. 참고로 저는 남는 컴퓨터로 개인 서버를 구축해 놓고서 거기서 테스트를 하고 있습니다.

                      html확장자 파일에서 php코드를 실행을 하려고 해도 실행되지 않는 문제가 있었습니다.

                      html에서 php코드를 실행하기 위해서는 php코드를 담고 있는 html파일이 있는 루트디렉토리에 .htaccess 파일을 생성히고 여기 AddType application/x-httpd-php .html 내용을 넣어 저장해 놓으면 html파일에서 php코드가 실행이 됩니다.
                      앗.. 그리고 저는 우분투 환경입니다.!!!
                      참고 : http://php.net......php
                    • 우탄
                      드디어 4000명중에 1000명 이하의 봤어요로 진입했습니다 하하하 딱 15일 걸렸네요
                      프레임워크 문제 빼면 9일 정도지만 정말 유익합니다 감사합니다.'."^.^".'
                    • NoCoder
                      실습5 따라 친건 안되고 복사하니 되군요;; 1시간 헤멧는데...
                      여전히 저는 어디가 틀린지 모릅니다;;

                      제꺼
                      $conn = mysqli_connect("localhost", "root", "비번");
                      mysqli_select_db($conn, "opentutorials");
                      $sql = "INSERT INTO topic (title, description, author, created) VELUES('".$_POST['title']."', '". $_POST['description']."', '". $_POST['author']."', now())";
                      $result = mysqli_query($conn, $sql);
                      header('Location: http://localhost......hp');

                      복사
                      $conn = mysqli_connect("localhost", "root", "비번");
                      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......hp');

                      라고 쓰고 어.. 뭔가 줄이 다른데 하고 보다가 values오타를 찾았습니다;;;
                    • programmer very GOSU
                      해결했습니다
                      $conn = mysqli_connect("localhost:8080","root","111111");
                      처음에 이렇게 썻었는데 댓글을 보고 mysql이 깔린 포트를 입력했더니
                      다행히 잘 되네요
                      $conn = mysqli_connect("localhost:3306","root","111111");
                    • 감사합니다.
                    버전 관리
                    egoing
                    현재 버전
                    선택 버전
                    graphittie 자세히 보기