본문 바로가기
PHP/Python/Ruby

pear 기본사용 - DB편

본문

http://ceomk.tistory.com/48
설치 기본 설명 페이지



<?php
//DB패키지를 include합니다.
include_once("DB.php");

//dsn을 설정합니다.
$dsn = array(
    "phptype"=>"mysql",
    "username"=>"test",
    "password"=>"test",
    "hostspec"=>"localhost",
    "database"=>"test"
);

/*
위와같이 배열로 dsn을 설정할수도 있고

mysql://user@host(/path/to/socket)/pear
와 같이 문자열로 줄수도 있습니다.
*/

//접속 옵션을 설정합니다.
$options = array(
    "debug"=>2,
    "portability"=>DB_PORTABILITY_ALL
);

/*
이렇게 하면 접속되고 변수 db에는 Object가 하나 반환됩니다.
php내장함수인 mysql_connect();과는 좀 다르죠?
*/
$db =& DB::connect($dsn, $options);

//접속이 잘 되었는지 체크합니다
if(PEAR::isError($db)){
//애러 Object를 반환하면 프로그램를 끝냅니다.
    die($db->getMessage());
}



/*
여기서 의문점!!
PEAR::isError();
'이건 DB에 포함되어있는 메소드 인가요?' 라는 질문이 생길수 있다.

PEAR는 보통 PEAR BASE를 기본적으로 바탕에 깔고 패키지를 만듭니다.
DB.php의 소스를 보면 어딘가에 PEAR.php를 include합니다.
*/



/*
테이블 생성 쿼리를 하나 날려보겠습니다.
mysql_query();와 동일하게 쿼리문만 넣어주면 됩니다.
*/

$result1 = $db->query("
CREATE TABLE IF NOT EXISTS T_TEST (
  t_index int(10) unsigned NOT NULL auto_increment,
  t_name varchar(32) NOT NULL,
  t_content varchar(255) NOT NULL,
  PRIMARY KEY  (t_index)
) ENGINE=InnoDB  DEFAULT CHARSET=euckr;
");

//역시 애러처리를 해줍니다.
if(PEAR::isError($result1)){
    die($result1->getMessage());
}

//그리고 데이터를 insert 해보겠습니다.

for($i=1; $i<5; $i++){
/*
새로운 메소드 입니다.
java의 PreparedStatement와 같은 역할을 합니다.
prepare메소드의 장점은 쿼리문을 config.php와 같은 설정 파일 하나에
모조리 집어넣어놓고 필요할때 호출해서 쓰면 코드가 좀더 간결하고 보기가 좋겠죠?

여기서 '?' <--요 물음표는 java를 하시는분은 아시겠지만,
php에서의 변수 자리입니다.
*/
    $ps = $db->prepare("INSERT INTO T_TEST (t_name,t_content) VALUES (?,?)");
        if (PEAR::isError($ps)) {
        die($ps->getMessage());
    }

/*
역시 새로운 메소드네요?
execute는 prepare에 들어간 쿼리를 완성시켜서 날리는 역할이라고 보시면 됩니다.
*/
    $insertData = array("테스트 이름 ".$i,"테스트 내용 ".$i);
    $rs =& $db->execute($ps, $insertData);
    if (PEAR::isError($rs)) {
        die($rs->getMessage());
    }
}


/*
이번에는 SELECT쿼리입니다.
*/

$data =& $db->getAll(
//prepare과 마찬가지로 변수대신에 '?'를 넣어줍니다
"SELECT * FROM T_TEST WHERE t_index > ?",
//'?'에 들어갈 값을 배열로 순서대로 넣어줍니다.
array(0),
//반환 형태를 정합니다.
DB_FETCHMODE_ASSOC);
if (PEAR::isError($data)) {
    die($data->getMessage());
}

echo "<pre>";
print_r($data);
echo "<pre>";

/*
아니!! 이건 내가 만들었던 함수랑 비슷하잖아?!
라고 외치는분들 계실껍니다.
허허허..
*/


/*
마지막으로 Table을 지우겠습니다.
(사실.. 데이터가 많이 쌓이면 서버가 힘들어해서 -_-;;
*/

$result2 = $db->query("DROP TABLE T_TEST;");

//역시 애러처리를 해줍니다.
if(PEAR::isError($result2)){
    die($result2->getMessage());
}


/*
그리고 반드시!!!
연결을 끊어줘야 합니다.
안그럼 계속 물고 늘어집니다 -_-;;
(접속 않끊고 mysql죽으면 남탓도 못합니다.)
*/

$db->disconnect();
?>
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

페이지 정보

최고관리자 작성일12-01-12 09:39 조회821회 댓글0건

첨부파일

댓글목록

등록된 댓글이 없습니다.

PHP/Python/Ruby 목록

게시물 검색

사이트 정보

  • 회사명 주인있소 / 대표 소담
  • 주소 강원도 속초시
  • 사업자 등록번호 123-45-67890
  • 전화 010-2026-0626 / 팩스 없음
  • 통신판매업신고번호 제 OO구 - 123호
  • 개인정보관리책임자 정보책임자명

고객센터

상단으로