WEB3 - PHP & MySQL

활용 - 글읽기

수업소개

PHP의 mysqli API를 이용해서 MySQL Server로부터 데이터를 가져와서 글읽기 기능을 구현하는 방법을 소개합니다. 

 

 

강의 1

 

소스 코드 변경사항

 

강의 2

소스코드 변경사항  

댓글

댓글 본문
  1. enujo
    23.12.19 산넘어산
  2. 또한 error_log 파일을 확인해보면 15번째 줄부터 오류라고 뜹니다!
    대화보기
    • 2분 48초 쯤 나오는 과정을 따라하고 있는데,
      $sql = "SELECT * FROM topic WHERE id={$_GET['id']}";
      $result = mysqli_query($conn, $sql);
      $row = mysqli_fetch_array($result);
      $article = array(
      'title'=>$row['title'],
      'description'=>$row['description']
      );
      print_r($article);
      이 코드를 똑같이 넣고 새로고침을 해보면 500 ERROR가 발생합니다.
      $result 이하부분을 지우고 $sql만 두면 작동하는데 그 밑에 과정이 되질 않습니다.
      왜 그런지 알려주실 수 있나요?
    • pmxsg
      2022.01.12. 일단 한 번 수강
    • chimhyangmoo
      21.06.28
    • 감사합니다
    • jwoh
      21-04-26
    • jeisyoon
      2021.04.16 글읽기 - OK
      PHP & MySQL과 연동하면서 페이징 전환 속도가 느린점을 해결하지 못함.
    • hanel_
      21.2.28 감사합니다
    • Jace
      그렇죠~ 오류나면 세미콜론부터 확인한답니다 전~
      대화보기
      • Jace
        사양 안좋은거 아닙니다. 그거 설정을 바꾸셔야 하는겁니다. 해당 설정이 되어있지 않다면 모든 코드 한줄한줄 비트나미가 디버깅 해서 그렇습니다
        대화보기
        • kkn1125
          궁금한게 있는데요.. 아무리 찾아봐도 어떻게 개선해야할지 몰라 질문드립니다..

          하나하나 따라하면서 복습중인데 반복문으로 li태그 리스트를 불러오고서 링크에 id값을 걸어 클릭하여 이동하면
          사이트 페이징 속도가 좀 느린감이 있습니다..

          영상에서는 시원시원하게 바뀌는데 반면 제 컴퓨터에서는 느리게 바뀌고, 개발자도구로 확인해보니
          // 참고로 저는 파이어 폭스를 쓰고있습니다. 크롬환경에서도 느려서 질문드립니다..

          네트워크 탭에서 해당 페이지의 파일부분에 거북이 모양이 생기고, DOMContentLoaded와 load가 2.09 ~ 2.10초 걸리며, 타이밍부분에서는 기다리기가 2.07초가 소요됩니다.

          create링크 이동시에는 20ms도 안걸리는데 왜 mysql연결된 리스트의 이동은 2069ms가 걸리는지 의문입니다...

          1. php환경설정을 변경하여도 같습니다..
          2. 아파치의 캐쉬설정을 하여도 같습니다...
          3. bitnami를 재설치하여도 같습니다..

          무슨 문제일까요 ㅠㅠ... 컴퓨터 사양차이라면 이해가 되지만 제 컴퓨터 사양이 안좋은 편은 아닌것 같아서요...
        • kkn1125
          21.01.09.토 완료~!
        • クレヨンしんちゃん
          ㅇㄹ
        • jy2714hn
          200718 완료
        • jaehyunlee
          06.14 고3 완료
        • 바다의왕자
          완료
        • 45678
          이번 수업은 폭풍 같달까요,, 촤르륵 몰아치 ㅎㅎ 정신없는 1인 ㅠㅠ 복습을 특히 꼼꼼하게 해야겠네용
        • 여러분... 혹시 while($row = mysqli_fetch_array($result)) 요거 하실 때 첫번째 행이 안 뜨는 문제가 생긴다면
          while 전에 row의 변수값을 지정하지 않았는지 확인하세요...
          while에서 조건이 실행되면서 충돌이 일어나는 것 같습니다...
          복사해서 붙여넣은 것을 눈치채지 못해서 이것 때문에 한시간은 헤멨네요 여러분은 이런 실수를 하지 않으시길.......
        • 냉탕에거북이
          감사합니닷-!
        • 허공
          190508 감사합니다.
        • incursio
          감사합니다
        • 신광섭
          콤마 하나 때문에 30분을 허비해 버렸네요.
          하하 이게 코딩의 묘미 인 것이겠죠?
          즐겁게 따라가고 있습니다.
          중간에 뭔가 틀렸을때 찾는 재미가 또 있네요.
          :D
        • ㅈㅈㅎ
          공백은 한 칸 띄어야 공백이들어가는거고 아무것도 안 들어있다고생각하시면 됩니다. 그리고 선언해주는 것은 아니지만,, 데이터타입을 알아서 정해주는 이런 언어에서는 선언이라고 생각해도 나쁘지는 않을 것 같네요
          대화보기
          • ozma00@nate.com
            엇 !! 답변 주셔서 감사합니다!! 항상 이고잉님께 감사한 마음으로 열공 하고 있습니다!!

            아 그리구요 이건 코딩야학 깃허브 질문란에서 제 질문에 답변주신 고마운분 에게

            질문 했던건데요 여기서도 질문 남겨봅니다!

            $ a = ' ' ; 이게 데이터 타입이 문자열인 공백이란 값이 들어있다는 건가요

            아님 그냥 $a=null 이란 뜻 인가요? 아님 $a 의 데이터 타입은 문자열이라고 선언 해주는 건가요?
            대화보기
            • egoing
              그렇게 해야 $list 변수에 순차적으로 값이 더해지거든요.
              대화보기
              • ozma00@nate.com
                궁금한게 있습니다!!
                $conn = mysqli_connect(
                'localhost',
                'root',
                '111111',
                'opentutorials');
                $sql = "SELECT * FROM topic";
                $result = mysqli_query($conn, $sql);
                $list = '';
                while($row = mysqli_fetch_array($result)) {
                $list = $list."<li><a href=\"index.php?id={$row['id']}\">{$row['title']}</a></li>";
                }
                이 코드에서
                $list = '';
                while($row = mysqli_fetch_array($result)) {
                $list = $list."<li><a href=\"index.php?id={$row['id']}\">{$row['title']}</a></li>";
                }
                이부분에 대해서 이해가 안가서 그러는데요
                왜 변수 값에 $list=' '; 이렇게 하는건지 궁금합니다 특별한 기능이 있는건가요?

                그리고 $list=' ' ; 이걸 빼고

                그냥 while($row = mysqli_fetch_array($result)) {
                $list ="<li><a href=\"index.php?id={$row['id']}\">{$row['title']}</a></li>";
                }

                이렇게 해보니깐 출력이 한 줄만 나오던데 왜 그러는건지 궁금합니다!

                $list =$list. <li>~~~</li> 왜 이렇게 $list=' '; 를 결합 해야지 데이터들이 다 출력이 되는거죠??
              • 윤민
                뒤에 ';' 붙였습니다
              • 윤민
                $sql = "SELECT * FROM topic WHERE id = {$_GET['id']}"
                아니 왜 이부분이 오류가 나는거죠? 몇시간째 답답하네요..;;
              • egoing
                $a = 1;
                print("aa $a aa") // 됩니다
                print("aa$aaa") // 안됩니다
                print("aa{$a}aa") // 됩니다
                즉 가급적 쓰시는게 명시적이고 좋습니다.
                대화보기
                • 양항준
                  {$row['title']} 에서 중괄호는 어떡 역할인가요? 그리고 반드시 사용해야 하나요?
                • 프로그래멍
                  강의 동영상에선 페이지 로드가 순간적으로 되는것같은데 제 실행화면에서 링크버튼을 누르면
                  URL 상에서 http://localhost......php => http://localhost......php?id=3 이렇게 바뀌는게
                  길면 2초가량 시간이 걸립니다 무슨차이때문에 그럴까요? 왜이리 느릴까요?
                • 박한석
                  phpmyadmin에 있는 데이터를 가져와서
                  php만 코딩 되어 있는 파일에서 echo로 출력하면
                  한글이 깨지지 않습니다 그런데
                  html태그 안에
                  $row1=mysqli_fetch_array($result1); 이렇게 받은 값을
                  $description="<a id=\"timeline_posttext\">".$row1["description"]."</a>";변수에 담아서

                  <ul id="timeline_posttop">
                  <li>
                  <img src="img/post_profile_03.gif" alt="#" id="post_profile_photo"/>
                  </li>
                  <li>
                  <?=$nametitle?>
                  <?=$name?>
                  </li>
                  <li id="post_edt">
                  <a href="#">
                  <img src="img/post_profile_06_06.gif" alt="#" id="post_profile_edt" />
                  </a>
                  </li>

                  이렇게 출력하려고 하면 깨집니다. 이유가 뭘까요 ㅠㅠ

                  --
                  html에 있는 meta charset utf-8을 지우니까 되긴 하는데...
                  이제는 다른 html 한글이 깨지네요 ㅠㅠㅠㅠㅠ
                • Jinho Hyeon
                  안녕하세요, 세상에 바보같은 질문은 없고. 궁금한건 물어보고 해결하는게 좋죠!
                  문자열 안에 php 문법으로 반환되는 값을 넣고 싶을 때에 {$row['title']} 처럼 {}를 넣어서 사용합니다.

                  $row['title']이 1 일 때
                  <a href="index.php?id={$row['title']}">링크!</a> 를 하면
                  <a href="index.php?id=1">링크!</a> 로 변환됩니다.

                  반면에, <a href="$row['title']">링크!</a>를 할 경우
                  <a href="$row['title']">링크!</a>로 그냥 HTML에 작성되는 걸 보실 수 있을 겁니다.

                  궁금하시면 문자열 보간이나 string interpolation, template string 등 으로 검색하시면 찾아보실 수 있을 거에요.
                  대화보기
                  • 바보같은 답변일 수도 있겠지만 "" 안에서 사용할때는 그냥 다 중괄호 해서 사용한다고 생각하시면 이해하기 쉽고 실행도 다 되는것 같네요.
                    대화보기
                    • 제갈량
                      감사합니다 ^^
                    • PHP_MySqL
                      바보 같은 질문일 수도 있을거 같은데
                      어떤 상황일 때 $row['title'] 를 쓰고, 어떨 때 괄호를 붙여서 {$row['title']} 를 사용하는지 알 수 있을까요? ㅜㅜ
                    버전 관리
                    egoing
                    현재 버전
                    선택 버전
                    graphittie 자세히 보기