테스트 사이트 - 개발 중인 베타 버전입니다

트랜젝션 오류 채택완료

쿠츠 10년 전 조회 4,109

코드가 좀 길긴 하나, 트랜젝션이 정상적으로 이루어지지 않고,, 마지막 페이지 데이터 입력만 정상적으로 처리 됩니다.

코드가 잘못된 것인지, 아니면, 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개

채택된 답변
+20 포인트
10년 전

테이블 타입을 innoDB로 바꿔서 해보세요

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

쿠츠
10년 전
정답이십니다 ㅜㅜ InnoDB인줄 알았는데,, 쓰기가 되는 테이블만 MyISAM 이였네요..
일단 테이블 타입 변경하고 적용했는데,, fail 뜨네요..
쿠츠
10년 전
불량학생님도 도움 주셨는데,, 실수한 부분 쪽집게 처럼 알려주신 균이님 답변을 채택하고, 불량학생님은 좋아요를 대신 드립니다.
코드상 사소한 오류도 있었네요,. 관심가지고 답변 주신 두분께 감사드립니다.

댓글을 작성하려면 로그인이 필요합니다.

올려주신 내용중에서 $materialCnt 이녀석의 값과 $materialArr[] 이녀석의 값은 어디서 오는것인지 이값이 있기는 한건지요???
로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

쿠츠
10년 전
네, 윗부분에 있는데, 코드가 잘렸습니다.
트랜젝션 부분 코드 빼고하면 모두 정상적으로 저장됩니다.
모든 테이블에 데이터가 들어가야 정보가 정상적으로 연동되는 것이라 트랜젝션 걸려고 한 것 입니다.
불량학생
10년 전
현재 보여지는 내용으로만 따지자면 AUTOCOMMIT=0 다음줄에 BEGIN 이 빠진것 말고는 없는 것 같은데요
쿠츠
10년 전
AUTOCOMMIT=0, BEGIN 둘다 다 해봤었는데 안되서 AUTOCOMMIT=0만 지정했었습니다.
구글링 해보니 AUTOCOMMIT=0과 BEGIN이 같은 뜻으로 해석하는 분들이 있어서, BEGIN을 뺀 것 입니다.
my.ini에서 설정하는게 없는건지.. 당췌 모르겠네요..

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인