트랜젝션 오류 채택완료
코드가 좀 길긴 하나, 트랜젝션이 정상적으로 이루어지지 않고,, 마지막 페이지 데이터 입력만 정상적으로 처리 됩니다.
코드가 잘못된 것인지, 아니면, my.ini에서 별도의 설정이 있어야 하는지 궁금합니다.
</span></p>sql_query(" SET autocommit=0 "); // transaction 설정(시작)<div>
</div><div>$twoblock_num = get_next_num($write['twoblock_table']); // 글 번호</div><div>// 데이터 입력</div><div>$twoblockSql = " INSERT INTO `{$write['twoblock_table']}`</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>SET wr_num = '$twoblock_num',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 글 번호</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>ca_name = '$twoblockCat', <span class="Apple-tab-span" style="white-space:pre"> </span>-- 카테고리</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_subject = '$presentTitle',<span class="Apple-tab-span" style="white-space:pre"> </span></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_content = '$presentContent',<span class="Apple-tab-span" style="white-space:pre"> </span></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>mb_id = '{$mb['mb_id']}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 회원아이디</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_password = '{$mb['mb_password']}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 회원비밀번호</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_name = '{$mb['mb_nick']}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 회원 닉네임</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_email = '{$mb['mb_email']}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 회원 이메일</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_datetime = '".G5_TIME_YMDHIS."',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 작성일</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_last = '".G5_TIME_YMDHIS."',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 수정일</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_ip = '{$_SERVER['REMOTE_ADDR']}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- ip</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_1 = '{$twoblockTag}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 태그</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_2 = '$wr_2',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_3 = '$wr_3',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_4 = '$wr_4',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_5 = '$wr_5',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_6 = '$wr_6',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_7 = '$wr_7',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_8 = '$wr_8',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_9 = '$wr_9',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_10 = '$wr_10' ";</div><div>$twoblockInsert1 = sql_query($twoblockSql);</div><div>
</div><div>$wr_id = mysql_insert_id();</div><div>
</div><div>// 부모 아이디에 UPDATE</div><div>$twoblockInsert2 = sql_query(" update `{$write['twoblock_table']}` set wr_parent = '$wr_id' where wr_id = '$wr_id' ");</div><div>// 새글 INSERT</div><div>$twoblockInsert3 = sql_query(" insert into {$g5['board_new_table']} ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '{$twoblock_table}', '{$wr_id}', '{$wr_id}', '".G5_TIME_YMDHIS."', '{$mb['mb_id']}' ) ");</div><div>// 게시글 1 증가</div><div>$twoblockInsert4 = sql_query(" update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '{$twoblock_table}' ");</div><div>
</div><div>// 이미지 업로드시(이미지는 하나만 업로드 됨)</div><div>/*</div><div>$twoblockInsert5 = sql_query(" update `{$write['twoblock_table']}` set wr_file = 1 where wr_id = '$wr_id' ");</div><div>*/</div><div>
</div><div>// 데이터 입력</div><div>$materialSql ="";</div><div>$materialInsRst = array();</div><div>
</div><div>for($i = 0; $i < $materialCnt; $i++){</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$materialSql = " INSERT INTO `{$write['material_table']}`</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>SET mtr_parent_id = '{$wr_id}', <span class="Apple-tab-span" style="white-space:pre"> </span>-- 연동 가이드 아이디</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>mtr_ori_idx = '{$materialArr[$i]->originalIndex}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 등록번호</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>mtr_crt_idx = '{$materialArr[$i]->currentIndex}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 보기순서</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>mtr_subject = '{$materialArr[$i]->nameAndCount}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- </div><div><span class="Apple-tab-span" style="white-space:pre"> </span>mtr_PO = '{$materialArr[$i]->whereBuy}'<span class="Apple-tab-span" style="white-space:pre"> </span>-- 구매처</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>";</div><div>
</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$materialInsRst[$i] = sql_query($materialSql);</div><div>
</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$mtr_id = mysql_insert_id();</div><div>
</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>// 이미지 업로드시(이미지는 하나만 업로드 됨)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>/*</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>sql_query(" update `{$write['material_table']}` set mtr_file = 1 where mtr_id = '$mtr_id' ");</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>*/</div><div>}//end for</div><div>
</div><div>// 페이지 데이터 입력</div><div>$tpageSql ="";</div><div>$tpageInsRst = array();</div><div>
</div><div>for($i = 0; $i < $tpageCnt; $i++){</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$tpage_num = get_next_num($write['tpage_table']); // 글 번호</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$tpageSql = " INSERT INTO `{$write['tpage_table']}`</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>SET wr_num = '$tpage_num',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 글 번호</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_parent = '$wr_id',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 아이디</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>ca_name = '$twoblockCat', <span class="Apple-tab-span" style="white-space:pre"> </span>-- 카테고리</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_subject = '$presentTitle',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 제목</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_content = '{$tpageArr[$i]->twoblockText}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 가이드 소개글</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>mb_id = '{$mb['mb_id']}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 회원아이디</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_password = '{$mb['mb_password']}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 회원비밀번호</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_name = '{$mb['mb_nick']}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 회원 닉네임</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_email = '{$mb['mb_email']}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 회원 이메일</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_datetime = '".G5_TIME_YMDHIS."',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 작성일</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_last = '".G5_TIME_YMDHIS."',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 수정일</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_ip = '{$_SERVER['REMOTE_ADDR']}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- ip</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_1 = '{$tpageArr[$i]->originalIndex}',<span class="Apple-tab-span" style="white-space:pre"> </span>-- 페이지 번호</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_2 = '',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_3 = '',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_4 = '',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_5 = '$wr_5',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_6 = '$wr_6',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_7 = '$wr_7',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_8 = '$wr_8',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_9 = '$wr_9',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>wr_10 = '$wr_10' ";</div><div>
</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$tpageInsRst[$i] = sql_query($tpageSql);</div><div>
</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>if(($tpageCnt - $i) == 1) {// 게시글 1 증가</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$tpageCntRst = sql_query(" updatee {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '{$tpage_table}' ");</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div>
</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>// 이미지 업로드시(이미지는 하나만 업로드 됨)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>/*</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>sql_query(" update `{$write['tpage_table']}` set wr_file = 1 where wr_id = '$wr_id' ");</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>*/</div><div>}//end for</div><div>
</div><div>// 트랜젝션</div><div>if($twoblockInsert1 && $twoblockInsert2 && $twoblockInsert3 && $twoblockInsert4 && $tpageCntRst /** && $twoblockInsert5 **/) {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>for( $i=0; $i < count($materialInsRst); $i++ ){</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>if ($materialInsRst[$i]) {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$chkArrRst1 = true;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>} else {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$chkArrRst1 = false;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>for( $i=0; $i < count($tpageInsRst); $i++ ){</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>if ($tpageInsRst[$i]) {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$chkArrRst2 = true;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>} else {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$chkArrRst2 = false;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>if($chkArrRst1 && $chkArrRst2) {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>sql_query("COMMIT");</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$msg = "data success!!!";</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>} else {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>sql_query("ROLLBACK");</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$msg = "data failure!!!";</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$statusCode = 443;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div>} else {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>sql_query("ROLLBACK");</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$msg = "data failure!!!";</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$statusCode = 443;</div>}<p>
답변 2개
답변에 대한 댓글 2개
코드상 사소한 오류도 있었네요,. 관심가지고 답변 주신 두분께 감사드립니다.
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 3개
트랜젝션 부분 코드 빼고하면 모두 정상적으로 저장됩니다.
모든 테이블에 데이터가 들어가야 정보가 정상적으로 연동되는 것이라 트랜젝션 걸려고 한 것 입니다.
구글링 해보니 AUTOCOMMIT=0과 BEGIN이 같은 뜻으로 해석하는 분들이 있어서, BEGIN을 뺀 것 입니다.
my.ini에서 설정하는게 없는건지.. 당췌 모르겠네요..
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
일단 테이블 타입 변경하고 적용했는데,, fail 뜨네요..