호스팅 사용법
호스팅 신청하기
도메인 연결하기
홈페이지 올리기
이메일 설정하기
서버 사용법
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>';
    }
  ?>

 

사이트명 : 뉴21 | 회사명 : (주)아사달 | 대표이사 : 서창녕 | 대표전화 : 02-2026-2000 | 팩스번호 : 02-2026-2008
사업자등록번호 : 206-81-24351 I 법인등록번호 : 110111-1940504 | 통신판매업신고 : 제18-890호 I 벤처확인번호 : 051134562200563
(우편번호 : 153-803) 서울특별시 금천구 가산동 371-28 우림라이온스밸리 A,동 8층 (주)아사달
Internet Explorer Google Chrome Mozilla Firefox
Apple Safari Opera browser
페이지 맨 위로 이동하기