IT_Programming/PHP

ADO 작업을 보다 쉽게 도와주는 함수

JJun ™ 2007. 9. 30. 11:45

adodb.inc.php 라는 라이브러리가 있긴한데 너무 무거워서 가볍게 만들었습니다.

function DBopen(&$conn){
$conn=new COM("ADODB.Connection");
$conn->Open($GLOBALS["strDB"]);
}
function RSopen(&$rs){
$rs=new COM("ADOR.Recordset");
$rs->CursorLocation=3;
}
function RSquery(&$conn,&$rs,&$query,$cache){
if($cache)$rs->cachesize=$cache;
$rs->open($query,$conn,0,1,1);
}
function DBClose(&$conn,&$rs){
$conn->Close();$rs=null;$conn=null;
}
function RSgetrows(&$rs){
$recordArr=array();
$k=$rs->Fields->Count;
for($i=0;!$rs->EOF;$rs->MoveNext(),$i++){
$fieldArr=array();
for($j=0;$j<$k;$j++){
$fieldArr[$j]=$rs[$j]->value;
}
$recordArr[$i]=$fieldArr;
unset($fieldArr);
}
return $recordArr;
}
function RSnextrecordset(&$rs){
$rs=$rs->nextRecordset();
}

$conn=null;$rs=null;
$strDB="디비연결문자열"

일단 위의 내용을 라이브러리나 템플릿에 넣어두시고 실제로는 아래와 같이 씁니다.

DBopen($conn);RSopen($rs);
$query='select subject from discuss with(nolock)';
RSquery($conn,$rs,$query,10);
$tmpArr=RSgetrows($rs);
$rs->Close();
DBClose($conn,$rs);

for($i=0,$j=count($tmpArr);$i<$j;$i++){
  echo($tmpArr[$i][0]);
}

rs객체의 캐쉬와 다중레코드셋을 모두 지원하는 함수군으로 캐쉬는 RSquery함수의 마지막 인자로 지정하시면 됩니다. 다중레코드셋을 이동하는 함수는 RSnextrecordset입니다.

 

출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=45150&page=1