디지털콘텐츠 No.1 (주)아사달 호스팅
내정보 도메인 호스팅 디자인몰 솔루션몰 홈페이지몰 모바일 디자인센터 게임 고객지원
로그인 회원가입 장바구니 도메인정보조회

호스팅 사용법
호스팅 신청하기
도메인 연결하기
홈페이지 올리기
이메일 설정하기
서버 사용법
FTP사용법
메일사용법
텔넷/리눅스
MySQL사용법
MSSQL사용법
리눅스명령어 모음
시스템사용법
서버세팅
네트워크/보안
L4 매뉴얼
백업/미러링
호스팅용어 모음
프로그램 사용법
알리미사용법
제로보드설치방법
워드프레스설치방법
태터툴즈설치방법
그누보드설치방법
우편번호DB사용법
폼메일사용법
주문서사용법
예전 게시판/방명록
전자지불 서비스
우수회원할인


HOME > 호스팅 > 사용안내 > MySQL사용법 > PHP연동
소개  기초문법  인덱스  조인  쿼리성능 
모델링  함수목록  PHP연동  DB백업  phpMyAdmin 사용법 

PHP를 이용한 MYSQL 연동

    PHP를 사용해서 MYSQL 서버같은 RDBM에 접속하려면 아래 단계를 거쳐야 한다.
서버에 연결한다. => 데이터베이스 작업을 한다. => 연결을 닫는다.

    MYSQL에 연결해서 작업하기 위해서는 필요한 함수들이 있다. 지금부터 그 함수들의 기능을 알아보고 실제 어떻게 접속할 수 있는지 짧은 코드를 작성할 것이다.
 

mysql_connect( )

    MYSQL 서버에 접속하려면 mysql_connect( ) 함수를 이용해야 한다. 함수의 인자로는 호스트이름, 데이터베이스 사용자 이름, 비밀번호 등 기본적으로 3개의 인자가 필요하다. 데이터베이스 서버 접속이 성공적으로 이루어지게 되면 연결 식별자(resource)를 반환하게 된다. 각각의 파일을 열 수 있듯이 mysql에도 여러 번 연결 가능하고 각 연결을 다른 용도로 사용할 수 있는데 각각의 연결을 구분할 수 있는 것이 연결 식별자이다. mysql_connect( ) 함수에서 인자를 사용하지 않으면 'localhost', '웹서버 소유자 이름', '비밀번호 없음'으로 하여 접속을 시도하게 될 것이다.
 

mysql_select_db( )

    이 함수는 사용할 데이터베이스를 선택하게 되는데 성공하면 true, 실패하면 false를 반환하게 된다. 인자로는 사용할 데이터베이스 이름, 연결 식별자를 전달하면 된다.
 

mysql_close( )

    MYSQL 서버와의 연결을 닫는 함수이다. 스크립트 파일이 종료가 되면 자동적으로 연결이 끊어지지만 미리 연결을 끊고 싶을 때 사용할 수 있다. 성공적으로 접속을 끊으면 true, 실패하면 false를 반환한다. 인자로는 연결 식별자를 전달하게 되며, 만약 식별자가 생략되면 마지막에 열린 연결을 사용한다.
 

PHP 함수를 이용한 데이터베이스 접속 예

  <?php
    $serverName = "localhost";
    $userId = "myuserid";
    $userPassword = "123456";
    $dbName = "mydatabase";.

 
    $dbconn = mysql_connect($serverName, $userId, $userPassword);
    if($dbconn) {
      $selectdb = mysql_select_db($dbName, $dbconn);
      if(!$selectdb) echo "사용할 데이터베이스가 선택되지 못했습니다.";
    }else{
      echo "MYSQL 서버에 접속할 수 없습니다.";
    }
  ?>

    변수 $serverName에는 도메인이나 IP를 사용할 수도 있다. mysql_connect( ) 함수를 이용하여 데이터베이스 서버에 접속을 하게 되고, 성공적으로 이루어지면 mysql_select_db( ) 함수를 사용하여 데이터베이스를 선택한다. 이런 절차가 성공적으로 이루어지게 되면 데이터베이스 서버에 접속해서 원하는 데이터를 select, insert, delete, update할 수 있다.
 

mysql_qeury( )

    선택된 데이터베이스에 query를 전송하는 함수이다. 두 개의 인자를 전달하게 되는데 첫 번째 인자는 질의문, 두 번째 인자는 리소스(resource)를 인자로 넣어주는데 두 번째 인자는 생략 가능하다. 만약 생략하게 되면 mysql_connect( ) 함수로 연결한 마지막 리소스를 사용하게 된다. SELECT, SHOW, DESCRIBE, EXPLAIN 구문으로 mysql_query( )를 호출하면 성공할 경우 리소스(resource)를 반환하고 실패하면 FALSE를 반환한다. UPDATE, DELETE, DROP 등의 구문으로 mysql_query( )을 호출하여 성공하면 TRUE, 실패하면 FALSE를 반환한다.
 

mysql_num_rows( )

    이 함수는 mysql_query( )에 의해 반환 받은 결과 세트에 몇 개의 레코드가 들어 있는지 알 수 있다. select 구문에만 적용된다. INSERT, UPDATE, DELETE 질의에 의해 적용된 행의 개수를 얻으려면 mysql_affected_rows( )를 사용하면 된다.
 

mysql_affected_rows( )

    INSERT, UPDATE, DELETE 명령어의 영향을 받은 레코드가 몇 개인지 알고자 할 때 사용하는 함수이다. 인자는 연결 식별자를 전달하면 되고, 생략할 수도 있다. WHERE 절 없이 DELETE 쿼리를 사용하면 모든 레코드가 지워지기 때문에 0을 반환한다.
 

mysql_fetch_row( )

    mysql_query( ) 함수에서 반환 받은 리소스를 인자로 전달하여 해당 레코드의 각 필드를 원소로 하는 배열을 반환한다. 불러올 레코드가 더 이상 없으면 FALSE를 반환한다. mysql_fetch_row( ) 함수를 반복 호출하면 이 포인터가 다음 레코드로 이동한다. 레코드가 담겨 있는 배열의 마지막 원소를 넘어가 버리면 false를 반환한다.
 

mysql_fetch_array( )

    연관 색인 및 숫자 색인으로 된 배열로 결과 행을 반환한다. mysql_fetch_row( ) 함수와 동일하게 작동한다.
 

mysql_fetch_assoc( )

    연관 색인으로 된 배열로 결과 행을 반환한다. mysql_fetch_row( ) 함수와 동일하게 작동한다.
 

mysql_fetch_object( )

    속성을 가진 객체를 반환한다. mysql_fetch_row( ) 함수와 동일하게 작동한다.
 

SELECT 문법

    한 개 혹은 그 이상의 테이블에서 선택된 레코드를 검색하여 출력하는데 사용된다.
  select 식 또는 필드 from 테이블이름
  [where 조건식]
  [group by 필드]
  [having 조건식]
  [order by 필드 [asc | desc]]
  [limit 오프셋, 행수]
 
  <?php
     $tablename = "mytable";
     $qeury = "select name, age from $tablename where name = '홍길동' and job='프
     로그램' order by age desc limit 10,20";
  ?>

    모든 키워드는 위의 select 사용법에 나온 순서대로 사용해야 한다. 예를 들어 having 절은 반드시 group by 뒤에, order by 전에 나와야만 한다. []로 묶인 부분은 필수사항이 아닌 선택사항으로 사용하면 된다. 위의 예제는 테이블 컬럼이 name, age, job으로 구성된 테이블(mytable)이다. name이 '홍길동'이고, 그리고 job이 '프로그램'인 레코드를 가져오는데 정렬방식은 'age' 기준으로 내림차순으로 정렬하고 10번째부터 총 20 레코드를 가져오라는 뜻이다.
    ① order by
    order by 절은 결과 테이블의 레코드를 정렬한다. 기본값은 작은 값에서 큰 값으로 정렬하는(오름차순) ASC이고, 큰 값에서 작은 값으로 정렬(내림차순)할 경우는 DESC를 사용한다. 생략하면 오름차순으로 정렬된다.
    ② group by
    그룹별로 검색할 때 사용된다. group by 절을 사용할 때는 그룹 함수를 사용해야 한다. 대표적인 그룹 함수는 COUNT( ), AVG( ), MIN( ), MAX( ), SUM( ) 등이 있다.
    ③ having
    having 절에 조건을 부여함으로써 그룹을 제한할 수 있다. 즉 group by 절에서 조건을 사용할 때 사용한다.
    ④ limit
    LIMIT 절은 쿼리 결과 중 원하는 부분만 가져오는데 사용된다. LIMIT 10,20의 뜻은 10번째부터 20개의 데이터를 가져오는 것이다.
    ⑤ where
    where 절은 조건에 맞는 부분의 레코드만 가져오는 것이다. 여러 가지 조건을 줄 수 있는데 AND와 OR를 사용할 수 있다.
 

INSERT 문법

    원하는 테이블에 데이터를 삽입할 때 사용한다. 형식은 다음과 같다.
  INSERT INTO table_name (column1, column2,...)
  VALUES (value1, value2,....)
  <?
      $tablename = "mytable";
      $query = "insert into $tablename(name, age, job) values('홍길동', '30', '프로그램
  ')";
  ?>

    tbl_name은 테이블 이름이고, column1은 컬럼명, value1은 컬럼명에 삽입될 값이 된다. mytable이라는 테이블에 name이라는 필드에 '홍길동', age에 30, job에 '프로그램'이라는 데이터를 삽입하는 쿼리문이다.
 

UPDATE 문법

    조건에 맞는 데이터를 수정할 때 사용한다. 형식은 다음과 같다.
  UPDATE table_name
  SET column_name1 = new_value1, column_name2 = new_value2, ...
  WHERE column_name1 = old_value
  <?
      $tablename = "mytable";
      $query = "update $tablename set name='이순신', age='50' where name='홍길동'";
  ?>

    tbl_name은 테이블 이름, column_name1은 컬럼명, new_value1은 수정될 데이터이고 where 절에 나오는 부분은 수정하기 위해 조건을 주는 방식이다. 조건이 주어지지 않으면 모든 레코드의 값들이 변경되기 때문에 항상 조심해야 한다.
 

DELETE 문법

    조건에 맞는 데이터를 삭제할 때 사용된다. 형식은 다음과 같다.
  DELETE FROM table_name
  WHERE column_name = some_value
 
  <?
      $tblName = "mytable" // 테이블 이름
      $sql = "delete from $tblName where name='홍길동'";
  ?>

    데이터를 삭제할 때 주의할 점은 조건절(where)이 없으면 해당 테이블의 데이터가 모두 삭제되므로 신중하게 사용해야 한다. 위의 예에서 보면 mytable이라는 테이블에서 컬럼 이름이 name이라는 필드에 '홍길동'이라는 사람을 삭제하는 쿼리문이다.
 

데이터 출력 예

    이 예제는 데이터베이스 접속부터 데이터 출력까지 프로그램된 코드이다. 레코드 개수가 20개를 출력하는 쿼리문이기 때문에 while 문에서는 레코드 20번 반복하게 된다. 만약 레코드 개수가 20개가 되지 않으면 레코드 개수만큼 반복하게 된다. mysql_fetch_assoc() 함수를 반복 호출하면 이 포인터가 다음 레코드로 이동한다. 레코드가 담겨있는 배열을 넘어가게 되면 false를 반환한다.
  <?php
    $serverName = "localhost";
    $userId = "myuserid";
    $userPassword = "123456";
    $dbName = "mydatabase";
 
    $dbconn = mysql_connect($serverName, $userId, $userPassword);
    if($dbconn) {
      $selectdb = mysql_select_db($dbName, $dbconn);
      if(!$selectdb) echo "사용할 데이터베이스가 선택되지 못했습니다.";
    }else{
      echo "MYSQL 서버에 접속할 수 없습니다.";
    }
    $tablename = "mytable"; // 테이블이름
    $qeury = "select name, age from $tablename where name = '홍길동' and job='프로그
                램' order by age desc limit 10,20";
 
    $resource = mysql_query($query);
    while($rows = mysql_fetch_assoc($resource)){
      echo "name = " . $rows['name'] . " age = " . $rows['age'] . '< br>';
    }
  ?>

 
배경이미지
배경이미지 회사소개 사진모음 협력사 오시는 길 이용약관 개인정보취급방침 전화상담안내 게시판 문의 한국어 / 日本語 / 中文 / ENGLISH / 사이트맵 배경이미지
배경이미지
배경이미지 사이트명 : 아사달닷컴 | 회사명 : (주)아사달 | 대표이사 : 서창녕 | 대표전화 : 02-2026-2000 | 팩스번호 : 02-2026-2008
사업자등록번호 : 206-81-24351 | 법인등록번호 : 110111-1940504 | 통신판매업신고 : 제18-890호 | 벤처확인번호 : 051134532200563
(우편번호 : 08507) 서울시 금천구 가산디지털1로 168 우림라이온스밸리 A동 8층 (주)아사달
(우편번호 : 153-803) 서울특별시 금천구 가산동 371-28번지 우림라이온스밸리 A동 8층 (주)아사달
Copyright ⓒ asadal.com All rights reserved.
인터넷 익스플로어 구글 크롬 모질라 파이어폭스
애플 사파리 오페라 넷스케이프
맨위로
디지털콘텐츠 No.1 (주)아사달