메인 공지사항 기능소개 매뉴얼     TEST BOARD : [1]  [2]  [3]  [4]  [5]
내용없음9
내용없음10
      APPLICATION
무료 스킨.모듈

유료 스킨.모듈

활용 홈페이지

활용팁 공유

자료 공유

유틸리티

웹 스터디
제작자 리소스

최근 활용팁 공유 RANK
        -- update:30Min --


왕초보, 왕비초보를 위한 mysql 간단 사용법
 application
활용팁 공유
테크노트 사용에 관련된 노하우를 공유하는 게시판입니다.
홈페이지 작업/운용중에 알게 된 여러가지 활용팁을 올려 주세요.
나에겐 그저 습관일 뿐이던 것이 누군가에겐 엄청 큰 힘과 도구가 되는 경우가 많답니다.
자료등록시 적립되는 포인트는 200P 입니다.
     
  작성자 밤안개비
ㆍ조회: 12873  ㆍ추천: 0         
ㆍ작성일: 2007년 2월 12일 월요일
왕초보, 왕비초보를 위한 mysql 간단 사용법
mysql쿼리 간단한 사용법

1. DB 접속

  가. 테크노트내에서 가능한 방법
      //DB 연결이외의 lib.php 파일내의 여러 함수등을 사용가능
      include_once './lib.php'; //파일내에 한번만 필요.  

  나. 일반적인 방법
      //PASSWORD 제외한 ID,DBNAME은 테크노트 관리자메뉴에서 확인
      $host_name = "localhost";
      $user_name = "user";
      $user_password = "*****";
      $db_name = "xxxxx";

      //변수를 넣어 호출하고 결과를 $connect에 넣어줌
      $connect = MYSQL_CONNECT($host_name,$user_name,$user_password) or echo "MYSQL_ERROR()";
      //DB 연결
      MYSQL_SELECT_DB($db_name, $connect ) or echo "MYSQL_ERROR()";

2. DB TABLE 생성 및 DATA 입력(추가),수정,삭제,조회(화면출력)

  아래에서 보시면 변수 $query 의 내용만 틀리고 모든 명령문의 내용은 똑같습니다.
  즉 아래와 같은 두줄로 이루어져 있습니다. 동일한 쿼리 구조라는 것 입니다.
  쿼리 내부의 where 나 order by 등에 대한 세세한 설명은 하지 않았습니다

  $query=".............";
  mysql_query($query,$connect) or echo "mysql_error()";

  또는  
  $query=".............";
  mysql_query($query,$connect); //에러가 나지 않는걸 알기 때문 뒷부분 삭제
  mysql_query($query);          //차이는 있지만 이렇게 쓰셔도 상관 없습니다    
 
  이 두 줄을 반드시, 그리고 확실히 숙지하시고 아래의 설명을 보시면 Oh !!!, Ahha !!! .....

  이해를 돕기 위해
  table 이름을 my_friends 라고 하고
  field 는 name(이름), tel(전화번호), address(주소) 로 구성되어 있다고 가정합니다.

  테크노트 관련된 table명 및 fields명을 보시려면 관리자메뉴 --> DB관리에서 보실수 있습니다.

  가. DB TABLE 생성

      $query = "CREATE TABLE my_friends ( //보기 좋으라고 줄바꿈 한것이므로 그냥 쭈욱 써도 됩니다
                    no int(11) DEFAULT '0' NOT NULL auto_increment,
                    name varchar(10),
                    tel varchar(20),
                    address text,
                    PRIMARY KEY (no)
                )";
      mysql_query($query,$connect) or echo "mysql_error()";

  나. 입력(추가)

      $query = "INSERT INTO my_friends VALUES (
                   '',
                   '홍길동',
                   '011-1234-5678',
                   '서울시 경기구 충남동 54321번지 98765호'
                )";
      mysql_query($query,$connect) or echo "mysql_error()";

  다. 수정

      $query = "UPDATE my_friends
                   SET name='홍길서',tel='019-9876-5432'
                   WHERE no=2" or name like '홍길'
                ";
      mysql_query($query,$connect) or echo "mysql_error()";

  라. 삭제

      $query = "DELETE FROM my_friends
                   WHERE name like '%홍%'
               ";
      mysql_query($query,$connect) or echo "mysql_error()";

  마. 조회(화면출력)
 
      여기는 약간의 설명이 필요한 부분이네요
      1) Query문을 mysql_query() 함수를 통해서 MYSQL에 전달하면
      2) mysql_query() 함수는 찾은 결과를 return 하게 됩니다.
      3) 이 값을 어떤곳에 저장을 하여야 합니다. 그래서 약간은 틀려집니다

         원래 읽기만 한다면 위의 예를 들어 설명한 부분과 똑 같이 아래와 같이 하여야 합니다
         $query="SELECT * FROM my_friends
                     ORDER BY no DESC
                     WHERE name like '홍길'
                     LIMIT 10
                ";
         mysql_query($query,$connect) or echo "mysql_error()";
         
         그러나 읽어온 데이터를 화면에 출력해야 하므로 그냥 읽고 지나가는 것이 아니라
         읽는 순간 어디엔가 담아두었다가 그걸 이용하여 출력해야 합니다
         여기서는 읽은값을 저장하기 위해서 $friend_data 라는 변수를 지정 했습니다.
         $query="SELECT * FROM my_friends
                     ORDER BY no DESC
                     WHERE name like '홍길'
                     LIMIT 10
                ";
         $friend_data=mysql_query($query,$connect) or echo "mysql_error()";

         위와 비교하여 '$friend=' 라는 변수가 추가 된것 빼 놓고는 똑같습니다.
         즉 읽은 데이터는 $friend 라는 변수에 배열로 저장될 것입니다.

      4) 저장된 값을 가지고 화면에 출력하여 봅니다      

         - 몇개를 읽어 왔는지 알아봅니다.
           $total_rows = mysql_affected_rows();

         - 첫번째 레코드를 읽어 봅니다
           mysql_data_seek($friend_data,0); //0부터 시작

         - 두번째 레코드를 읽어 봅니다
           mysql_data_seek($friend_data,1);// 1은 두번째

         - 한개씩 차례로 읽어 변수에 넣어 봅니다
           $print_data = mysql_fetch_array($friend_data);

           함수 mysql_fetch_array()는 $friend_data에서 해당인수의 값을 배열로 return 합니다.
           즉 $print_data[no], $print_data[name], $print_data[tel], $print_data[address]
           에 값을 보관합니다.

         - 화면 출력을 하여 봅니다
            echo "이름 : $print_data[name],
                  전화번호 : $print_data[tel]
                 ";

      5) 화면에 쭈루룩 출력하는것을 정리하여 봅니다
         $query="SELECT * FROM my_friends
                     ORDER BY no DESC
                     WHERE name like '홍길'
                     LIMIT 10
                ";
         $friend_data=mysql_query($query,$connect) or echo "mysql_error()";
         $total_rows = mysql_affected_rows();
         for ($i = 0; $i < $total_rows; $i++){
             mysql_data_seek($data,$i);
             $print_data = mysql_fetch_array($friend_data);
             echo "이름 : $print_data[name],
                  전화번호 : $print_data[tel]
                 ";
         }

      6) 위의 5)번과 같이 하면 뭔가 복잡하고 그렇습니다.
         ★★다른 방법으로 쭈루룩 출력하는것을 정리하여 봅니다

         $query="SELECT * FROM my_friends
                     ORDER BY no DESC
                     WHERE name like '홍길'
                     LIMIT 10
                ";
         $friend_data=mysql_query($query,$connect);        

         echo "<table>\n"; //\n은 줄바꿈표시(개행문자)임

         while ($print_data=mysql_fetch_array($friend_data)){

             //가공필요한 부분만 가공
             $print_data[name] = "<font color=blue>".$print_data[name]."<font>";//색갈지정
             $print_data[address] = string_cut($print_data[address],20,'..');//20자로 줄임

             //화면 출력
             echo "<tr>\n";
             echo "    <td>".$print_data[no]."</td>\n";
             echo "    <td>".$print_data[name]."</td>\n";
             echo "    <td>".$print_data[tel]."</td>\n";
             echo "    <td>".$print_data[address]."</td>\n";
             echo "</tr>\n";
         }

         echo "</table>\n";

3. DB 닫기

   mysql_close(); //★DB 닫기


4. 정리들어갑니다
  이해가 되셨다면 화면출력 하실때에는 상기 2번의 6) 설명처럼 출력 하시면 되겠습니다...

  그리고 아래의 예는 while문 안의 변수를 그냥 넣어서 한줄로 간결하게 표현하였습니다
  내용은 회원관리보드에서 하나씩 값을 읽고 그 값의 어떤 조건에 따라
  그 글의 필드를 계산된 새로운 값으로 수정하는 것입니다.
  이정도만 이해 하신다면 my_sql은 어떤 것이라도 가능합니다....

  <?php
   include_once './lib.php'; //파일 맨처음에 이미 있으면 불필요. 이줄을 사용하시면 아래의 ★표시줄은 없어도 됨

   mysql_connect("localhost",ID,PASSWORD);//★관리자 메뉴에서 확인
   mysql_select_db(DBNAME);               //★관리자 메뉴에서 확인

   $current_time = time(); //현재시간(timestamp값)
   $daysofyear   = 365;    //일년의 일수

   while ($Mdata=mysql_fetch_array(mysql_query("select * from a_tn3_memberboard_list"))){ //DB table 읽기
       $regist_time  = $Mdata[m_date];             //등록일자
       $no           = $Mdata[no];                 //고유번호
       $difference   = $current_time-$regist_time; //차이
       $elapsed_days = floor($difference/86400);   //경과일수(소숫점 짜름)

       mysql_query("update a_tn3_memberboard_list set m_level=$daysofyear-$elapsed_days where no='$no'"); //수정
   }

   mysql_close(); //★DB 닫기
  ?>


5. 추가 사항입니다
  다른분께서 만든 프로그램을 보면 깜깜합니다.
  다른분께서 만드신 프로그램을 해석하기 위해서는 아래와 같이 구성되어 있는 내용을
    "아는문장 +  $가 들어간 변수 + 뭔지는 모르지만 눈으로는 아는 문장 +  $가 들어간 변수"
  일단 $변수를 전부 그 변수가 가지고 있는 값으로 치환후 내용을 재구성해 봅니다.  
    "아는문장 +  변수 실제값 + 뭔지는 모르지만 눈으로는 아는 문장 +  변수 실제값"
  그러면 훨씬더 프로그램에 가까이 다가 설 수 있습니다...


어디선가 스크랩해서 스터디하면서 대충 정리 하였던 것을 일부 수정하면서....
그냥 냅다 (초보분들을 위한다는 명분하에) 올리는 것이라 오류가 있을 수 있습니다.
고수분께서 오류를 지적하여 주시면 저 뿐만 아니라 읽으시는 모든 분들에게 도움이 될것 같습니다.

수고하십시요..
       
염라대왕
2007-02-12 14:06
좋은 자료를 올려 주셨군요.
테크노트 제작자님께서 고려해 보시고
이런 자료들은 그냥 다른 자료와 묻혀있지 않도록 '스터디'나 '자료실' 같은 코너를 신설하여
관리해 주셨으면 하고 건의합니다. 감사합니다.
     
임목수
2007-02-12 14:36
회원사진
좋은글 감사 합니다.
염라대왕님 글도 공감 합니다.....
     
아이슬
2007-02-13 00:42
좋은자료올려주신덕분에 정말공부많이합니다. 감사합니다 ~ 꾸뻑
     
cambo
2008-12-02 20:10
정말 피가되고 살이되는 ....감사합니다.
     
hook
2011-01-20 22:38
좋은 내용 감사합니다.
     
카스랑
2012-05-09 06:50
회원사진
왕과 왕비 양성평등주의 밤안개가 깔리다
     
호세
2012-05-14 23:19
좋은글 잘 읽었습니다.
     
  0
3500
FILE #1 .
FILE #2 .
FILE #3 .
FILE #4 .
FILE #5 .
FILE #6 .
FILE #7 .
FILE #8 .
FILE #9 .
FILE #10 .
윗글 메뉴 활성화時 화살표에 대한 초보용 설명
아래글 스크롤 따라다니는 배너,메뉴,퀵버튼(중앙정렬,좌측정렬)
1187 페이스북 공유시 사진이 안보일 경우 techwear 2017-05-06
1186 방문자의 익스플로러 버전 체크해주는 소스입니다 [1] 신홍 2017-03-07
1185 모바일 웹.. 아이폰, 아이패드 iwindow 레이어 문제 해결 [3]+1 신홍 2017-02-12
1184 모바일에서 주소복사 기능 [1] 신홍 2017-02-10
1183 모바일 [무료모바일프로그램]안드로이드 스튜디오 [2] 작은소망 2017-01-25
1182 게시판에 효율적으로 광고를 하려면... [1] 신홍 2017-01-04
1181 수정 올더게이트 통신 IP 변경 안내 모두모두 2016-12-05
1180 쇼핑몰 회원 장바구니 유지하기 [1] 기즈모SOFT 2016-12-05
1179 수정 커스터마이징된 파일첨부 필드에서 파일 삭제방법 [2] TECHSTAR 2016-10-17
1178 네이트 팀룸으로 메시지 전송~ [2]+2 Terrorboy 2016-09-20
1177 수정 특정 변수값의 한글이 깨질때 사용-삭제 모두모두 2016-09-05
1176 댓글 목록 제한 스크립 추가시 생기는 제한 [1] cherryboyz 2016-07-21
1175 푸시불렛 소스 [2]+4 Terrorboy 2016-06-30
1174 응용 게시물의 날짜 및 시간 변경 [2] 모두모두 2016-05-31
1173 수정 0(제로) 검색 [1] 기즈모SOFT 2016-05-09
1172 운영 종전에 보드 URL을 유보드 URL로 리로딩되게하는 팁. 요나단 2016-04-26
1171 모듈 페이스북처럼 스크롤따라 동영상 재생 컨트롤하는 rolVideo.min... [1]  : DN:1710 rolVideo.min.js : DN:1869 starbros 2016-03-29
1170 DB 오름차순 정렬시 null 또는 공백이 먼저 나오는 문제 해결 기즈모SOFT 2016-03-23
1169 응용 변덕쟁이 IE에서 innerHTML 쌍따옴표 있다 없다 [2] 기즈모SOFT 2016-03-16
12345678910,,,63