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();
?>
설치 기본 설명 페이지
<?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();
?>
관련링크
- http://ceomk.tistory.com/48 733회 연결
댓글목록
등록된 댓글이 없습니다.