디버깅을 위한 쿼리 날리기 함수
페이지 정보
작성자 서방님 댓글 0건 조회 100회 작성일 12-10-30 11:51본문
출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=9627
요즘 만들고 있는 게시판(PWS)에서 사용하고 있는 함수입니다. 게시판들 만들다보니 쿼리 날린데서 에러가 발생되서 오작동하는 경우가 너무 많더군요. 더군다나 DB 구조가 계속 바뀌다보니 종종 해당 에러가 나더군요. 그래서 디버깅 하기 용이하게 쿼리 날리기 함수를 만들었습니다. (당연히 insert, update, delete 를 위함이지, select 용은 아닙니다)
보통은 쿼리를 날리실 때 그 즉석에서 날리시잖아요. 다만 제가 한 방식은 배열로 모았다가 한 번에 날립니다.
장점은 어디서 쿼리 에러가 났는지 알 수 있고, 마음만 먹으면 에러 발생시킨 쿼리를 출력시킬 수도 있으며, 에러가 난 경우 전(before) 단계 쿼리를 취소(이전 단계로 되돌리기)시킵니다. 물론 제가 만드는 게시판용이며 많은 테스트를 거치지 않았기 때문에, 에러 발생시 전(all) 단계 취소 기능이나 그런건 이 함수에는 없습니다. 만들기는 어렵지 않을테니 필요하신 분은 개량해서 쓰세요.
# 글 넣기
$goquery[] = "insert into $intable values({$o['tono']}, 생략)";
$cancelquery[] = "delete from $intable where no={$o['tono']}";
$err[] = "원글을 못넣었수.";
# 본문 넣기
$goquery[] = "insert into $intexttable values('', {$o['tono']}, 생략)";
$cancelquery[] = "delete from $intexttable where orno=$o[tono]";
$err[] = "본문을 못넣었수";
# table management 에서 현 테이블의 글 갯수 추가하기
$goquery[] = "update pws_tableman set allarti = allarti + 1 생략";
$cancelquery[] = "update pws_tableman set allarti = allarti - 1 생략";
$err[] = "갯수 증가 못함";
# 쿼리 날리기
query2pws($goquery, $cancelquery, $err);
# 쿼리 실행
function query2pws($qr, $cqr, $err) {
# 값 초기화
$result = 0;
$allqrcnta = sizeof($qr);
$allqrcntb = $allqrcnta - 1;
# 루프를 도세요~
for($i=0;$i<=$allqrcntb;$i++) {
$j = $i-1;
# 만일 두번째 이상의 쿼리를 실행하면
if($i>0) {
if($i!=$result) {
# 전단계를 취소하고
$badresult = sql_query($cqr[$j]);
# 전단계에 대한 에러 출력.
print_error($err[$j], "history.back()");
}
}
$result += sql_query($qr[$i]);
}
# 마지막 체크
if( $allqrcnta != $result ) print_error($err[$allqrcntb], "history.back()");
}
==================================
$allqrcntb이라는 변수를 for문에서만 쓰면
궂이 필요없을것 같은데여..
$allqrcntb를 없애고..
for ($i=0 ; $i < $allqrcnta ; $i++)로 하면 될것 같은데...
댓글목록
등록된 댓글이 없습니다.