웹 애플리케이션 만들기

관계형 데이터베이스 실습

실습1 

opentutorials.sql

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `topic`
-- ----------------------------
DROP TABLE IF EXISTS `topic`;
CREATE TABLE `topic` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `description` text NOT NULL,
  `author` int(11) NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of topic
-- ----------------------------
INSERT INTO `topic` VALUES ('1', 'About JavaScript', '<h3>Desctiption</h3>\r\n<p>JavaScript  is a dynamic computer programming language. It is most commonly used as part of web browsers, whose implementations allow client-side scripts to interact with the user, control the browser, communicate asynchronously, and alter the document content that is displayed.</p>\r\n<p>\r\nDespite some naming, syntactic, and standard library similarities, JavaScript and Java are otherwise unrelated and have very different semantics. The syntax of JavaScript is actually derived from C, while the semantics and design are influenced by the Self and Scheme programming languages.\r\n</p>\r\n<h3>See Also</h3>\r\n<ul>\r\n  <li><a href=\"http://en.wikipedia.org/wiki/Dynamic_HTML\">Dynamic HTML and Ajax (programming)</a></li>\r\n  <li><a href=\"http://en.wikipedia.org/wiki/Web_interoperability\">Web interoperability</a></li>\r\n  <li><a href=\"http://en.wikipedia.org/wiki/Web_accessibility\">Web accessibility</a></li>\r\n</ul>\r\n', '1', '2015-03-31 12:14:00');
INSERT INTO `topic` VALUES ('2', 'Variable and Constant', '<h3>Desciption</h3>\r\n\r\nIn computer programming, a variable or scalar is a storage location paired with an associated symbolic name (an identifier), which contains some known or unknown quantity or information referred to as a value. The variable name is the usual way to reference the stored value; this separation of name and content allows the name to be used independently of the exact information it represents. The identifier in computer source code can be bound to a value during run time, and the value of the variable may thus change during the course of program execution.\r\n\r\n<h3>See Also</h3>\r\n<ul>\r\n<li>Non-local variable</li>\r\n<li>Variable interpolation</li>\r\n</ul>\r\n', '3', '2015-05-14 10:04:00');
INSERT INTO `topic` VALUES ('3', 'Opeartor', '<h2>Operator</h2>\r\n<h3>Description</h3>\r\n<p>Programming languages typically support a set of operators: constructs which behave generally like functions, but which differ syntactically or semantically from usual functions</p>\r\n<p>Common simple examples include arithmetic (addition with +, comparison with >) and logical operations (such as AND or &&). </p>\r\n', '1', '2015-06-18 05:00:00');
INSERT INTO `topic` VALUES ('4', 'Conditional', '<h3>Description</h3>\r\n<p>In computer science, conditional statements, conditional expressions and conditional constructs are features of a programming language which perform different computations or actions depending on whether a programmer-specified boolean condition evaluates to true or false. Apart from the case of branch predication, this is always achieved by selectively altering the control flow based on some condition.</p>\r\n<p>In imperative programming languages, the term \"conditional statement\" is usually used, whereas in functional programming, the terms \"conditional expression\" or \"conditional construct\" are preferred, because these terms all have distinct meanings.</p>\r\n<h3>See Also</h3>\r\n<ul>\r\n<li><a href=\"http://en.wikipedia.org/wiki/Branch_(computer_science)\" title=\"Branch (computer science)\">Branch (computer science)</a></li>\r\n<li><a href=\"http://en.wikipedia.org/wiki/Conditional_compilation\" title=\"Conditional compilation\">Conditional compilation</a></li>\r\n<li><a href=\"http://en.wikipedia.org/wiki/Dynamic_dispatch\" title=\"Dynamic dispatch\">Dynamic dispatch</a> for another way to make execution choices</li>\r\n<li><a href=\"http://en.wikipedia.org/wiki/McCarthy_Formalism\" title=\"McCarthy Formalism\">McCarthy Formalism</a> for history and historical references</li>\r\n<li><a href=\"http://en.wikipedia.org/wiki/Named_condition\" title=\"Named condition\" class=\"mw-redirect\">Named condition</a></li>\r\n<li><a href=\"http://en.wikipedia.org/wiki/Test_(Unix)\" title=\"Test (Unix)\">Test (Unix)</a></li>\r\n<li><a href=\"http://en.wikipedia.org/wiki/Yoda_conditions\" title=\"Yoda conditions\">Yoda conditions</a></li>\r\n</ul>', '2', '2015-07-25 00:00:00');
INSERT INTO `topic` VALUES ('5', 'Function', 'A function model or functional model in systems engineering and software engineering is a structured representation of the functions (activities, actions, processes, operations) within the modeled system or subject area.', '2', '0000-00-00 00:00:00');
INSERT INTO `topic` VALUES ('6', 'Object', 'In computer science, an object is a location in memory having a value and possibly referenced by an identifier. An object can be a variable, a data structure, or a function. In the class-based object-oriented programming paradigm, \"object\" refers to a particular instance of a class where the object can be a combination of variables, functions, and data structures. In relational database management, an object can be a table or column, or an association between data and a database entity (such as relating a person\'s age to a specific person)', '3', '0000-00-00 00:00:00');

-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `password` varchar(30) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'egoing', '111111');
INSERT INTO `user` VALUES ('2', 'jin', '222222');
INSERT INTO `user` VALUES ('3', 'k8805', '333333');
INSERT INTO `user` VALUES ('4', 'sorialgi', '444444');
INSERT INTO `user` VALUES ('5', 'lily', '555555');
INSERT INTO `user` VALUES ('6', 'happydeveloper', '666666');

실습2

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 topic.id,title,name,description FROM topic LEFT JOIN user ON topic.author = user.id WHERE topic.id=".$_GET['id'];
      $result = mysqli_query($conn, $sql);
      $row = mysqli_fetch_assoc($result);
      echo '<h2>'.$row['title'].'</h2>';
      echo '<p>'.$row['name'].'</p>';
      echo $row['description'];
  }
  ?>
  </article>
</body>
</html>

실습3

process.php

<?php
$conn = mysqli_connect("localhost", "root", 111111);
mysqli_select_db($conn, "opentutorials");
$sql = "SELECT * FROM user WHERE name='".$_POST['author']."'";
$result  = mysqli_query($conn, $sql);
if($result->num_rows == 0){
  $sql = "INSERT INTO user (name, password) VALUES('".$_POST['author']."', '111111')";
  mysqli_query($conn, $sql);
  $user_id = mysqli_insert_id($conn);
} else {
  $row = mysqli_fetch_assoc($result);
  $user_id = $row['id'];
}
$sql = "INSERT INTO topic (title,description,author,created) VALUES('".$_POST['title']."', '".$_POST['description']."', '".$user_id."', now())";
$result = mysqli_query($conn, $sql);
header('Location: http://localhost/index.php');
?>

코드의 힘을 느껴봅시다

코드는 부품을 결합하는 접착제라고 할 수 있습니다. 부품이 강력해지면 코드의 힘도 강력해집니다. 단 몇줄의 코드를 추가하는 것으로 파일업로드라는 매우 어려운 기능을 웹사이트에 추가해보겠습니다. 이를 위해서 uploadcare라는 서비스를 활용할 것인데요. 주소는 아래와 같습니다. 

http://uploadcare.grsm.io/e/1Xl

참고로 위의 주소로 서비스에 방문하면 서비스에 수익이 발생했을 때 수익금의 일부가 생활코딩에게 지급됩니다. 생활코딩은 이 수익금 전액을 비영리 단체 오픈튜터리얼스의 후원금으로 사용합니다.  

 

소스코드

github

댓글

댓글 본문
작성자
비밀번호
  1. 이응
    uploadcare 좋은 api네요!! 감사합니다.ㅎㅎ
  2. 응디
    이미지 url을 textarea에 붙여넣는 과정에서 오타를 너무 많이 냈었네용 그래서 헤맸는데
    결국에는 해결완료!

    감사합니다 :)
  3. egoing
    아마도 영상을 편집하는 과정에서 생긴 문제가 아닐까 싶습니다. 원래는 1씩 증가 되는게 맞습니다. 수업을 찍을 때 여러번에 걸쳐서 재작업 하기 때문에 이런 혼선이 있네요. 중요한 것은 순차적으로 증가한다는 것도 있지만 절대 정복되지 않는키를 데이터베이스가 자동으로 만들어준다는 것입니다.
    대화보기
    • 도원진
      6번에서 17번으로 부여한 것은 6에서 1을 증가시켜 7이 된것이 아닙니다.

      영상에 나와있는 결과가 제 컴퓨터에서는 나타나지 않습니다.

      어떤 이유인지 다시한번 설명 부탁드립니다.
      대화보기
      • egoing
        잠시 쉬시면서 아래 영상을 한번 권해봅니다~
        대화보기
        • thswns62
          너무어려워요 DB쪽 넘어와서부터 ㅠㅠ 멘붕이다.
          자꾸 보다가 중간에 못따라가네요. ㅠㅠ
          뭘하기위해 지금의 코드를 쓰는지 까먹게돼요 ㅠㅠ
          뭐 10번보면, 아니 100번보면 이해가겟죠
        • programmer very GOSU
          textarea에 id값도 추가시키고 다했는데 이상하게 img tag가 안붙네요
          document.getElementById('description').value = document.getElementById('description').value +
          '<img src="'+info.cdnUrl+'">';
          이렇게 하면 URL이 안뜨고

          document.getElementById('description').value = document.getElementById('description').value +
          info.cdnUrl;
          이렇게 하면 뜨는데 왜 그런걸까요?
        • 첨지
          일단은 봤는데 완벽히 이해는 되지 않았습니다.
          SQL 공부하면서 이해가 되지 않았던 PHP 부분을 이해하게 된 것처럼,
          이후에 다른 공부를 본격적으로 하면서 자연스럽게 SQL 원리도 이해할 수 있지 않을까 생각합니다.

          우선 흐름은 이해했으니.. 감사합니다^^
        • programmer very GOSU
          왜 author이 자꾸 숫자로 나올까요?
          그리고 hoya3라고 입력하면 추가가 안되네요
          이고잉님꺼 복붙해도 똑같은데 이유를 모르겠네요
        • 우탄
          어려워서 진도가 잘 안나가네요ㅠ,ㅠ
          감사합니다 잘 보고 있습니다~
        • 흐리
          ㅋㅋㅋ 카메라 켜졌을때 엄청 당황하신게 보이네요 ㅎㅎㅎ
          원래는 말하실때 실수 잘 안하시는 것 같은데 ㅋㅋㅋㅋㅋㅋ
          강좌 열심히 보고있습니다! 감사합니다~
        • 전준혁
          process.php 코드 마지막 부분에 서버로 전송되는 query 부분을 구지 $result 변수에 넣어주지 않아도 되지 않나요 ?
        • 3.30.
        • 14번째
          3.29.
        • 초보개발자
          textarea에 img tag가 안 붙는 걸로 헤매는 분이 있을 것 같아 첨언합니다.

          1. textarea에 id='descrption' 추가 해야 합니다.
          2. <script> var singleWide ~~ </script> 이 소스가 </body> 바로 위에 붙어야 합니다.
          즉, 다른 uploadcare 관련 javascript 소스를 먼저 붙이고, 맨 뒤에 위 코드가 들어가야 하니 참고하세요.
        • 이수재
          수강완료 03/16
        • 승톨
          감사합니다!!
          대화보기
          • 느긋
            $sql= select*from user WHERE name='" ~~이 아니라
            $sql= "select*from user WHERE name='" ~~입니다.
            select 부터 ' 까지 전부 문자입니다.

            그러므로 "문자" 다음 .변수. 이 들어가고 "문자"가 들어가야
            <?php ?> 안에서 .이 변수와 문자를 이어붙이는 역할을 해줍니다.

            변수가 'author'로 출력 되려면 ' 가 문자 author는 변수 ' 가 문자가 되어야 하므로
            "'"문자 .author.변수 "'" 문자가 되어야 합니다.

            아마 select 앞의 "를 못 보신 것 같네요.
            대화보기
            • 170303
              감사합니다.
            • 승톨
              따옴표 관련 질문있습니다.

              .(점)은 php에서 다른 것과 엮어주는 걸로 배웠는데 $sql= select*from user WHERE name='".$_POST['author']."'"; 이 부분에서 name=이후에 작은따옴표가 나오는건 추후에 출력했을 때 'egoing'으로 나오기 위해 나오는건 알겠는데 그렇다면 .(점)은 작은 따옴표 이전에 나와야되지않나요? name=.'"$_post ~~ 이런식으로 나와야 되지 않는지 궁금하네요! 아시는 분 가르쳐주시면 감사하겠습니다!
            • 미싱프로그램
              세상은 참~ 넓다..라고 생각이 팍 드네요..^^
            • 강경호
              감사합니다
              170225
            • 중간자
              var singleWidget = uploadcare.singleWidget('[role=uploadcare-uploader]');

              위의 코드가 아래와 같은 에러가 발생합니다 아시는 분 고견을 부탁합니다.

              - 아래 -

              Uncaught TypeError: uploadcare.singleWidget is not a function
              at write.php:97
            • 중간자
              write.php에서 본문입력 시 uploadcare widget을 이용하여 본문에 upload한 파일의 url을 삽입하려고 하는데 다음과 같은 에러가 발생합니다.아시는 분 고견을 부탁합니다.
              Uncaught TypeError: uploadcare.singleWidget is not a function
              at write.php:43
              uploadcare.full.min.js:17 Camera is not allowed for HTTP. Please use HTTPS connection.
              i.warn @ uploadcare.full.min.js:17
            • 34534534
              작은 따옴표를 큰 따옴표로 감싸주는 경우랑 그냥 작은 따옴표만으로 문자를 감싸는 경우 두 가지 경우가 이해가 안 되는데 어떻게 이해를 해야 하나요?
            • central1
              실습 3번 영상 14분 즈음에 var_dump($row);의 결과로 null이 나오네요 ㅠㅠ 왜이런거지요
              밑에 댓글 달린 부분대로 따라 해봐도 달라지는게 없네요..ㅠㅠ
            • egoing
              1씩 컴퓨터가 자동으로 증가시키는 값입니다.
              마지막 학생이 30번인데 전학생이 오면 31번을 부여받는 것과 같은 이치죠.
              대화보기
              • Iluminate
                해결했습니다.
                본문 : <textarea name="description" id="description"></textarea>
                본문 textarea 에 id 값을 주니 되네요!
                대화보기
                • 여기까지 따라왔는데, 정말 매번 감사합니다!

                  개인적인 궁금증이 있어서요 ㅎㅎ 처음 문의드리네요.

                  id 번호 같은 경우 저는 순차적으로 들어가는데
                  egoing 님의 것은 6번 다음 바로 17번으로 가는데

                  이 id는 컴퓨터가 임의로 생성하는 것인가요?
                • Iluminate
                  저도 이미지 업로드 후 본문에 이미지 주소값이 나오지 않네요..
                  <input type="hidden" role="uploadcare-uploader" />
                  <input type="submit"name="name">
                  </form>
                  </article>
                  <script>
                  UPLOADCARE_PUBLIC_KEY = "deb848bcf1d9806b6362";
                  </script>
                  <script charset="utf-8" src="//ucarecdn.com/libs/widget/2.10.3/uploadcare.full.min.js"></script>

                  <script>
                  var singleWidget = uploadcare.SingleWidget('[role = uploadcare-uploader]');
                  singleWidget.onUploadComplete(function(info){
                  document.getElementById('description').value=document.getElementById('description').value +'<img src="'+ info.cdnUrl+'">';
                  });
                  </script>

                  틀린게 있는건지..ㅜㅜ
                • hellisoued
                  감사합니다 ㅎㅎ
                  대화보기
                  • anikwon
                    이 페이지 맨 윗쪽 예제 opentutorials.org를 보시면 6번째 줄에

                    DROP TABLE IF EXISTS `(테이블명)`;

                    이녀석 입니다.
                    대화보기
                    • 헬리사우드
                      테이블삭제를 아무리검색해봐도 찾지를못하겠네요. 테이블삭제법을 알고계신분 있나요?
                    • 유민호
                      대박 _ 하나 들어있다니 왜 제눈에는 안 보였을가요. 정말 감사합니다!
                      대화보기
                      • 문돌이
                        저도 계속 안되다가...

                        <p>본문 : <textarea name="description" id="description"></textarea></p>

                        저는 id="descripton" 이 부분을 없어서, id 값을 설정하지 않으니 밑에 script에 작성한 value 값이 없어서 나타나지 않았습니다.
                        대화보기
                        • 문돌이
                          아래쪽 부분에서

                          VALUES ('".$_POST['title']."','".$_POST['description']."','".$_user_id."', now())";
                          $result = mysqli_query($conn,$sql);
                          header('Location: http://localhost......hp');
                          ?>


                          $user_id."'.now())";

                          $와 user_id 사이에 _ 이것이 없으면 되지 않을까요?
                          대화보기
                          • 유민호
                            수업 정말 잘 듣고 있습니다. ^^

                            질문은 새로운 작가 데이터를 입력시 작가가 유저테이블에 입력되면서, 자동으로 토픽 테이블에 그 값이 매칭이 되어야되는데, 계속 안됩니다. 전문을 긁어다 붙여넣기하면 되는데, 제가 친 것은 안 되는데 어떤 사유로 그럴까요?

                            <제가 친 코드>

                            <?php
                            require("config/config.php");
                            require("lib/db.php");
                            $conn = db_init($config["host"],$config["duser"],$config["dpw"],$config["dname"]);
                            $sql="SELECT * FROM user WHERE name='".$_POST['author']."'";
                            $result = mysqli_query($conn, $sql);
                            if($result->num_rows == 0){
                            $sql = "INSERT INTO user (name, password) VALUES('".$_POST['author']."', '111111')";
                            mysqli_query($conn, $sql);
                            $user_id = mysqli_insert_id($conn);
                            } else {
                            $row = mysqli_fetch_assoc($result);
                            $user_id = $row['id'];
                            }
                            $sql="INSERT INTO topic(title, description, author, created)
                            VALUES ('".$_POST['title']."','".$_POST['description']."','".$_user_id."', now())";
                            $result = mysqli_query($conn,$sql);
                            header('Location: http://localhost......hp');
                            ?>

                            <이고잉님코드>
                            <?php
                            require("config/config.php");
                            require("lib/db.php");
                            $conn = db_init($config["host"],$config["duser"],$config["dpw"],$config["dname"]);
                            $sql = "SELECT * FROM user WHERE name='".$_POST['author']."'";
                            $result = mysqli_query($conn, $sql);
                            if($result->num_rows == 0){
                            $sql = "INSERT INTO user (name, password) VALUES('".$_POST['author']."', '111111')";
                            mysqli_query($conn, $sql);
                            $user_id = mysqli_insert_id($conn);
                            } else {
                            $row = mysqli_fetch_assoc($result);
                            $user_id = $row['id'];
                            }
                            $sql = "INSERT INTO topic (title,description,author,created)
                            VALUES('".$_POST['title']."', '".$_POST['description']."', '".$user_id."', now())";
                            $result = mysqli_query($conn, $sql);
                            header('Location: http://localhost......hp');
                            ?>
                          • Hyunsik Lim
                            if 조건문에서 조건을 $result == false 로 했을 때도 정상 작동하는 것 같네요.
                            (sql에 보낸 명령문이 잘못되었을때 '**값이 boolean입니다'라는 식의 에러가 많은게 생각나서..)
                            $result->num_rows == 0 으로 사용하는 혹시 특별한 이유가 있는지 궁금합니다!
                          • 까비에프
                            num_row 값이 1 이상인지 확인하는 부분에서 "오!" 했습니다 ㅋㅋ 예외 처리가 궁금했거든요~

                            그런데 제가 다른 언어를 접하다 배운 예외처리는 '에러 발생시 다른 코드 적용' 개념으로 try-exception 을 사용해왔던 것 같아서요~ 찾아보니 php에도 try-catch-throw가 있네요! if-else로 처리하는 것과 메모리 할당량이 다른건지.. 둘중에선 어느게 더 나은 방법인지 궁금합니다. 또 다른 방법이 있다면 그것도 알고싶구요.
                          • 나홀로문도리
                            좋은 강의 잘 들었습니다.

                            저... 저도 업로드 케어에서 본문에 이미지 주소값 나오는 부분은 안 되는 것 같습니다. 해결책을 알려주시면 다시 들러붙어 보겠습니다 ^^;;;
                          • 저는 오늘 이것을 봤는데요 handylady님께서 댓글로 남기신 코드를 다시 atom에 복사, 붙여넣기하시면 실행이 됩니다.
                            대화보기
                            • 저도 업로드 케어 붙이는 부분에서 본문으로 붙는 부분이 안되네요.

                              크롬에서 Inspect 해보니까 이 부분이 "document.getElementById('description').value = document.getElementById('description').value + '<img src = "'+info.cdnUrl+'">';" Uncaught TypeError: Cannot read property 'value' of null 라는 에러가 떠서 안되는거 같네요.

                              이리저리 찾아봐도 해결이 혼자서는 안되어서 ㅜ_ㅜ 일단 다음으로 넘어갑니다.
                            • 이성진
                              수강 완료!
                              좋은 강의 항상 감사 드립니다~
                            • handylady
                              업로드 케어 붙이는 부분도 소스코드 있었으면 좋겠습니다.
                              본문으로 붙는 부분이 안 되는데 에러가 아
                              제가 못찾는 것인가요? ^^a

                              (이 부분.. 뭐가 틀린건지 -_ㅜ)

                              <script>
                              var singleWidget = uploadcare.SingleWidget('[role = uploadcare-uploader]');
                              singleWidget.onUploadComplete(function(info){
                              document.getElementById('description').value=document.getElementById('description').value +'<img src="'+ info.cdnUrl+'">';
                              });
                              </script>
                            • 정말 잘 듣고 있습니다~! 너무 너무 감사합니다.
                              판교 경기문화창조허브에서 직접 뵈었어야 하는 건데..
                              제가 시간이 안돼서 참석을 못하였네요.. 정말 아쉬웠습니다.
                              저에게 코딩수업은 산넘어 산이지만 정말 유익하게 듣고 있습니다.

                              하나 여쭤볼게 있는데
                              process.php 에서 변수 $sql 이 계속 새로 정의 되는데 있어서 생기는 문제는 없을까요?
                              $sql 변수가 실행 될때 바로 위에서 정의된 $sql 로 실행 되기 때문에 문제가 없는 것으로 알고 있으면 될까요?
                              $sql의 상수값 즉 정의된느 값은 실행되는 값에 따라 바뀌어도 바로 윗줄에서 정의된 것으로 실행되기 때문에 괜찮은 것인가요?

                              질문은 예를 들어 각 $sql 을
                              1) $sql = "SELECT * FROM user WHERE name='".$_POST['author']."'";
                              2) (if 구문의 )$sql = "INSERT INTO user (name, password) VALUES('".$_POST['author']."', '111111')";
                              3) $sql = "INSERT INTO topic (title,description,author,created) VALUES('".$_POST['title']."', '".$_POST['description']."', '".$user_id."', now())";

                              구분 하기 쉽게 $sql1, $sql2, $sql3 으로 정의해도 상관 없나요?
                              아니면 반드시 전부다 $sql 로 같아야 하나요? 궁금합니다..

                              그리고 감사합니다!
                            • 폭스킴
                              아침에 출근하면 무의식적으로 오픈튜토리얼스로 접속하는 저를 발견하고 있습니다;; 부두교 술사에 사로잡힌 좀비가 된 거 같아요 ㅋ
                            • 123123
                              왜안될까 슬프다
                            • 임지호
                              데이터베이스 들어오면서 엄청 어렵네요 거의 80%는 이해가 안되는듯요ㅠㅠ
                              일 때문에 한달여간 공부 못한 것도 엄청 크고..
                              그래도 다시 빢세게 해보겠습니다~~!!
                            • 히스토
                              감사합니다. 하다가 오타와 몇줄을 빼먹은 적도 많았네요. 디버깅 덕분에 잘 풀었습니다. 막힐 때는 짜증나고 그렇지만, 탁 풀어냈을 때 성취감이 있네요. 뭐가 문제지 하면서 문법도 더 알게 되는 것 같습니다.
                            • 규현빵
                              opentutorials.sql 를 카피앤 페이스트 했는데 오류가 떠서 봤더니 시간지정을 0000-00-00 이런식으로 되어 있었더라고요.. 토픽 테이블에 5,6번이요.. 그런데 수정하는 방법을 따로 안올려주셔서요... 그냥 다시 작성하면 자동으로 덮어쓰기 형식으로? 수정이 될까요??
                            버전 관리
                            egoing
                            현재 버전
                            선택 버전
                            graphittie 자세히 보기