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