생활코딩

Coding Everybody

코스 전체목록

닫기

프로그래밍과 연동

프로그래밍과 데이터베이스의 관계

  1. 프로그래밍과 데이터베이스는 무관하다.
  2. 데이터베이스는 독립적인 시스템으로 프로그래밍과 상관없이 사용될 수 있다.
  3. 데이터베이스를 이해하고 있다면 여기에 프로그래밍을 결합해서 더 많은 일을 할 수 있다.

API

  • 데이터베이스는 API를 제공한다.
  • PHP와 같은 프로그래밍 언어들은 이 API를 이용해서 데이터베이스를 이용한다.

PHP와 MYSQL

  • 가장 많이 사용되는 조합

데이터베이스의 내용을 웹으로 출력하기

STEP1. 데이터입력

CREATE DATABASE `class` CHARACTER SET utf8 COLLATE utf8_general_ci;
USE class;
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` tinyint(4) NOT NULL AUTO_INCREMENT,
  `name` char(4) NOT NULL,
  `address` varchar(50) NOT NULL,
  `department` enum('국문과','영문과','컴퓨터공학과','전자공학과','물리학과') NOT NULL,
  `introduction` text NOT NULL,
  `number` char(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_number` (`number`) USING BTREE,
  KEY `idx_department` (`department`),
  KEY `idx_department_name` (`department`,`address`),
  FULLTEXT KEY `idx_introduction` (`introduction`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
 
INSERT INTO `student` VALUES (1, '이숙경', '청주', '컴퓨터공학과', '저는 컴퓨터 공학과에 다닙니다. computer', '0212031');
INSERT INTO `student` VALUES (2, '박재숙', '서울', '영문과', '저는 영문과에 다닙니다.', '0512321');
INSERT INTO `student` VALUES (3, '백태호', '경주', '컴퓨터공학과', '저는 컴퓨터 공학과에 다니고 경주에서 왔습니다.', '0913134');
INSERT INTO `student` VALUES (4, '김경훈', '제천', '국문과', '제천이 고향이고 국문과에 다닙니다.', '9813413');
INSERT INTO `student` VALUES (6, '김경진', '제주', '국문과', '이번에 국문과에 입학한 김경진이라고 합니다. 제주에서 왔어요.', '0534543');
INSERT INTO `student` VALUES (7, '박경호', '제주', '국문과', '박경호입니다. 잘 부탁드립니다.', '0134511');
INSERT INTO `student` VALUES (8, '김정인', '대전', '영문과', '김정인입니다. 대전에서 왔고, 영문과에 다닙니다.', '0034543');

STEP2. 웹페이지 만들기

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
    <style>
        table{border:1px solid gray; border-collapse:collapse;}
        td{border:1px solid gray;padding:5px;}
    </style>
</head>
<body>
<?php

$conn = mysql_connect("localhost", "root", "1234");
mysql_query('SET NAMES utf8');
if (!$conn) {
    echo "Unable to connect to DB: " . mysql_error();
    exit;
}

if (!mysql_select_db("class")) {
    echo "Unable to select mydbname: " . mysql_error();
    exit;
}

$sql = "SELECT * 
        FROM  student
    LIMIT 10";

$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    exit;
}

// While a row of data exists, put that row in $row as an associative array
// Note: If you're expecting just one row, no need to use a loop
// Note: If you put extract($row); inside the following loop, you'll
//       then create $userid, $fullname, and $userstatus
echo "<table>";
while ($row = mysql_fetch_assoc($result)) {
    echo "<tr><td>{$row['id']}</td><td>{$row['name']}</td><td>{$row['department']}</td></tr>";
}
echo "</table>";
mysql_free_result($result);

?>
</body>
</html>

댓글

댓글 본문
작성자
비밀번호
  1. Cafe24에서 PHP 7.0으로 연습 중인데 에러가 납니다.
    확장 버전 문제라고 하는데
    해결이 안되어
    앞으로 나가지를 못하고 있어
    도움 요청합니다.
    apmset에서는 정상 가동합니다.
    감사합니다.
  2. HHHH
    감사합니다.
    조금 실용적인 질문을 드리고 싶은데, 만약 제가 개발한 APP[게임]에서
    Facebook과 연동을 하고 싶다면, Facebook의 API를 받아야 하는것인가요?
    예를들어 리더보드처럼 사용자의 기록을 가지고서 순위를 매기는데, Facebook친구들간의 순위를
    표시하고 싶습니다.

    그리고 해당기능을 실현하기위해 알아야 할 프로그래밍언어라던가 기술지식이 있으면 알려주세요.
  3. Sangbok Lee
    아 해결했습니다.
    값이 주어지지 않는다는 뜻인듯해서 혹시나하고 $sql 문을 점검했는데 SELECT * FROM ( DB이름 )으로 해놓고있었네요.
    대화보기
    • Sangbok Lee
      현재 phpmyadmin을 통해 db입력이 끝나고, 아랫분들의 코드를 통해 발생했던 문제들을 해결했는데요, 마지막으로 한 부분이 막혀서 풀리지가 않네요 ㅠ
      계속
      Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\Bitnami\wampstack-7.1.12-0\apache2\htdocs\test\index.php on line 28
      Could not successfully run query (SELECT * FROM `sj_test` LIMIT 100) from DB:
      이라는 오류가 출력되요.
      mysqli_error()에 하나의 parameter가 주어져야하는데 현재는 아무런 값도 주어지지 않는다는 의미인듯한데... 혹시 비슷한 문제를 겪으신 분이 있나요?
    • Gweonsu Kim
      mysql query 구문과 관련되어 웹 페이지에 결과가 나타나지 않을 때 해결할 수 있는 코드입니다.
      밑에 'e배속'님이 해결하셨던과 비슷한 코드입니다.

      <!DOCTYPE html>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
      <style>
      table{border:1px solid gray; border-collapse:collapse;}
      td{border:1px solid gray;padding:5px;}
      </style>
      </head>
      <body>
      <?php

      $conn = mysqli_connect("localhost", "root", "비밀번호");
      mysqli_query($conn,'SET NAMES utf8');
      if (!$conn) {
      echo "Unable to connect to DB: " . mysqli_error();
      exit;
      }

      if (!mysqli_select_db($conn,"class")) {
      echo "Unable to select mydbname: " . mysqli_error();
      exit;
      }

      $sql = "SELECT *
      FROM student
      LIMIT 10";

      $result = mysqli_query($conn,$sql);

      if (!$result) {
      echo "Could not successfully run query ($sql) from DB: " . mysqli_error();
      exit;
      }

      if (mysqli_num_rows($result) == 0) {
      echo "No rows found, nothing to print so am exiting";
      exit;
      }

      // While a row of data exists, put that row in $row as an associative array
      // Note: If you're expecting just one row, no need to use a loop
      // Note: If you put extract($row); inside the following loop, you'll
      // then create $userid, $fullname, and $userstatus
      echo "<table>";
      while ($row = mysqli_fetch_assoc($result)) {
      echo "<tr><td>{$row['id']}</td><td>{$row['name']}</td><td>{$row['department']}</td></tr>";
      }
      echo "</table>";
      mysqli_free_result($result);

      ?>
      </body>
      </html>
    • sheis
      잘 봤어요^^
    • e배속
      자문자답입니다. 밑에거 해결한거 소스첨부합니다.

      <!DOCTYPE html>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
      <style>
      table{border:1px solid gray; border-collapse:collapse;}
      td{border:1px solid gray;padding:5px;}
      </style>
      </head>
      <body>
      <?php

      $conn = mysqli_connect("localhost", "root", "gnqlwjr1","class");
      mysqli_query('SET NAMES utf8');
      if (!$conn) {
      echo "Unable to connect to DB: " . mysqli_error();
      exit;
      }


      $sql = "SELECT *
      FROM `student`
      LIMIT 10";

      $result = mysqli_query($conn,$sql);

      if (!$result) {
      echo "Could not successfully run query ($sql) from DB: " . mysqli_error();
      exit;
      }

      if (mysqli_num_rows($result) == 0) {
      echo "No rows found, nothing to print so am exiting";
      exit;
      }

      // While a row of data exists, put that row in $row as an associative array
      // Note: If you're expecting just one row, no need to use a loop
      // Note: If you put extract($row); inside the following loop, you'll
      // then create $userid, $fullname, and $userstatus
      echo "<table>";
      while ($row = mysqli_fetch_assoc($result)) {
      echo "<tr><td>{$row['id']}</td><td>{$row['name']}</td><td>{$row['department']}</td></tr>";
      }
      echo "</table>";
      mysqli_free_result($result);

      ?>
      </body>
      </html>
      대화보기
      • e배속
        혹시 우분투에서 list.php 파일 웹으로 실행하면 아무것도 안뜨는분 있으신가요?
        php는 제대로 동작하는것 같은데 mysql이랑 연동이 안된는지 이상하게 아무것도 안뜨네요
        비밀번호도 1234일때 아무런 경고창도 안떠요
      • 헬리사우드
        뒷북이지만... https://opentutorials.org......361 참고해주세요
        대화보기
        • 1 À̼÷ ÄÄÇ»ÅÍ°øÇаú
          2 ¹ÚÀç ¿µ¹®°ú
          3 ¹éÅ ÄÄÇ»ÅÍ°øÇаú
          4 ±è°æ ±¹¹®°ú
          6 ±è°æ ±¹¹®°ú
          7 ¹Ú°æ ±¹¹®°ú
          8 ±èÁ¤ ¿µ¹®°ú
          php에서 위에처럼 폰트가 깨져서 나옵니다.
          어떻게 해야 할까요?
        • NamJin Kim
          아 저는 윈도 설정에서 작동이 안되네요 뭔가 apmsetup 으로 제가 phpmyadmin을 안깔아서 그런거같아요
        • 감사합니다
        • ㄷㄷㄷㄷ
          1234로 되어있는거 설정하신 비밀번호로 바꾸세요 설정안하셨으면 아마 apmsetup이실듯
          대화보기
          • JustStudy
            고맙습니다
          • 이주환
            2016. 04. 13.
            정독했습니다. ㅎㅎ
          • 감사합니다ㅠㅠ 덕분에 돌아가요
            대화보기
            • w3school
              w3school 이 홈피에 다 있습니다.
              대화보기
              • oh yes
                리눅스나 윈도우나 같습니다
                대화보기
                • webbie
                  php로 입출력 하는 여러가지 방법을 알려 주시면 감사하겠습니다!!!.

                  배열이랑 for문을 이용해서 입력 을 받아서

                  출력을 여러가지 형태로 할 수 있는 방법에 도움을 주실수 있을까요?
                • 쥬슈야
                  첫번째 동영상 내용에 리눅스의 설명을 기본으로 하고 있지만, 윈도우 사용자분도 이 영상을 보신 후 뒤이어 windows 용도 동영상을 봐주세요. 라는 내용이 있으면 좋겠네요.
                • 대학생이므니다
                  안녕하세요~ 요즘 데이터공부를 하고있는 학생입니다.
                  제가 mysql의 데이터를 c언어에 보내려고하고있는데요.
                  알아보니 mysql의 헤더파일과 라이브러리파일을 찾아 연결을 해야되더라구요.
                  근데 제가 egoing님이 알려주신대로 apm setup을 통해 mysql을 다운로드했는데
                  도저히 lib파일과 헤더파일의 경로를 못찾겠습니다..ㅠㅠ
                  도움을 좀 주실수있을까요?
                • 조신부리
                  감사합니다
                • 정말로 감사드립니다. ㅠ 감동입니다
                • 부탁드립니다 ㅠㅠㅠㅠㅠ
                  정말 유용한 정보 감사합니다 .죄송하지만 한가지만 여쭤봐도 되겠습니까?
                  안드로이드 폰을 client로 php를 통해 mysql 에 접근하고 데이터를 얻어오는 방식을 구현하고자 합니다.

                  예를들어, A라는 테이블의 내용을 프린트해주는 list.php가 있다고하면,
                  로컬에서는 localhost/list.php 하면 출력이 되는데,
                  외부 즉, 안드로이드 클라이언트에서 하려면 외부주소 xxx.xxx.xxx.xxx/list.php를 하면 없는 파일이라고 나오는데, 어떻게 해야 외부에서 list.php파일로 접근가능한가요?
                • 엔터를 땅치면 요롷케
                  아리가또!!!!!
                • 지키리
                  감사합니다!!
                • 금도끼은도끼
                  msql을 PDO방식으로 바꿔어요 참고하세요
                  <!DOCTYPE html>
                  <html>
                  <head>
                  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
                  <style>
                  table{border:1px solid gray; border-collapse:collapse;}
                  td{border:1px solid gray;padding:5px;}
                  </style>
                  </head>
                  <body>
                  <?php
                  $dbh = new PDO ('mysql:host=localhost;dbname=class','root','111111');
                  $stmt = $dbh->prepare('SELECT * FROM student');
                  $stmt->execute();
                  $list = $stmt->fetchAll();

                  echo "<table>";
                  foreach($list as $row) {
                  echo "<tr><td>{$row['id']}</td><td>{$row['name']}</td><td>{$row['department']}</td></tr>";
                  }
                  echo "</table>";
                  ?>
                  </body>
                  </html>
                • sssssqew
                  저도 코드에서 비밀번호 설정을 '1234'로 해서 리눅스와 윈도우 모두 실수했네요 ㅎㅎ;;

                  이고잉님 강의 아주 잘 듣고 있습니다. 코딩이 점점 재미있어지네요.
                  그리고 앞으로 개발자로 성장하는데 어떤 마음가짐을 가져야 하는지도 알려주시고 감사합니다.
                • 코딩코코
                  강의 무지 하게 넘넘 감사하게 보며, 즐기고(?) 있습니다.
                  혹시 저처럼 고생 하시는 분이 있을까봐 ....
                  저는 Bitnami를 설치하여 MySQL을 실습중인데,
                  php.ini를 수정하지 않은체 걍 실습 하니 첫 줄 $conn = mysql_connect("localhost", "root", "leefrank");에서 부터 Error가 나서 한참을 고생 했네요 ^^;

                  처음 설치 후 php.ini를 수정 해야 올바로 실행이 되거군요. (extension 이라 부르더군요), 처음부터 개발자용 ini에 넣어 주면 편할것을... 하지만 2줄만 수정 하여 간단히 해결 하였습니다 ~

                  우선 php.ini를 수정합니다 (c:\Bitnami\wampstack-5.4.31-0\php\php.ini)

                  extension=php_mysql.dll 에서 ";"를 제거 해야 하고 (코멘트 처리 되어 있었음)

                  그 아래쪽에,
                  extension_dir = "c:\Bitnami\wampstack-5.4.31-0\php\ext"
                  를 한줄 더 추가로 넣고 난 후 php.ini를 저장 한 후 빠져 나오시면 일단 절반은 성공 ~,

                  다시 "Restart All"(manager-windows에서 "manager service")해 주니까 비로서 실행이 되더군요 ~
                • egoing
                  php가 동작하고 있나요?
                  대화보기
                  • YOUNG RYEOL
                    echo가 기본적으로 실행되는지 보려고
                    <?php
                    echo "Hello";
                    ?>

                    로 코딩하고 실행해보면 Hello 라는 문자가 출력되는것이아니라
                    웹페이지상에
                    <?php
                    echo "Hello";
                    ?>

                    가 그대로 출력됩니다... 어찌해야할까요?ㅠ
                  • 아에이오우z
                    자바와 DB를 연동하는부분은 어떻게 공부하는게 좋을가요????
                  • 김태훈
                    아~ 정말 부끄럽네요...
                    새벽에 봐서 그랬던건지 html문서내에 비밀번호 1234를 똑같이 붙여넣고 계속 헤메고 있었네요...OTL
                    혹시나 저같은 사람이 없었으면 하는 마음에서 부끄럽지만 글은 안지우고 그냥 둘게요..^^;;
                  • 김태훈
                    어떤 비밀번호를 말씀하시는 건지?... phpmyadmin들어오는건 잘 들어왔고 student table도 만들었습니다. 거기에 phpmyadmin말고 다른비밀번호가 있나요?? htdocs에 있는 다른 html파일들은 잘 실행이 되는데 sql과 php 연동되는 부분에 뭔가 문제가 있는 것 같은데 뭐가 잘못된건지 잘 모르겠네요...T.T
                    대화보기
                    • egoing
                      비밀번호가 틀린 거 아닐까요?
                      대화보기
                      • 김태훈
                        window7사용중인데 마지막에 list.php를 localhost에서 실행하려니 이런게 나오네요...
                        왕초보라 뭘 어떻게 해야되는지 모르겠네요...T.T

                        Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in C:\APM_Setup\htdocs\list.php on line 13

                        Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\APM_Setup\htdocs\list.php on line 14

                        Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\APM_Setup\htdocs\list.php on line 14
                        Unable to connect to DB: Access denied for user 'ODBC'@'localhost' (using password: NO)
                      • baekdata
                        정말 감사합니다 ^^
                      • 이강민
                        php 내부에서 실행되는 내용은 외부에서 볼 수 없습니당~
                        대화보기
                        • JaeWon Jang
                          너무 재밋네요 ㅋㅋ 요기서 맛보기하고 오늘 바로 서점갑니다. 언넝 뭔가 만들어보고싶네요 ㅋㅋ
                        • Ana Log
                          body 첫 부분을 보면 mysql에 접근할 수 있는 비밀번호를 적게 되어있는데
                          혹시, 유출 가능성은 없나요?
                        • hoiyada
                          좋은 내용인 듯 합니다. 감사합니다
                        • Starmomo
                          MySQL을 PHP에서 불러오는 부분. 매우 유용했습니다. 웹페이지의 데이타를 MySQL과 저장하는 것과 MySQL과 연결하여 웹페이지에서 보여주는 사례를 더 보았으면 좋겠습니다. 이고잉님, 고맙습니다.
                        • Lee. Seong Gwan
                          저는 mac에 /var/www 디렉토리가 없어요 ㅠ
                        버전 관리
                        egoing
                        현재 버전
                        선택 버전
                        graphittie 자세히 보기