set_cart_id함수 커스텀 중 mysql query가 비동기처럼 처리되는 현상

set_cart_id함수 커스텀 중 mysql query가 비동기처럼 처리되는 현상

QA

set_cart_id함수 커스텀 중 mysql query가 비동기처럼 처리되는 현상

본문

안녕하세요 개발 진행중에 도저히 이해가 안 되서 질문 올립니다.

set_cart_id함수를 수정하고 있는데 쿼리의 값이 예상했던값과 너무 다르게 나오고 있습니다.

 


// cart id 설정
function set_cart_id($direct)
{
    global $g5, $default, $member;
 
    echo 'in set_cart_id'.'<br>';
 
    if ($direct) {
        $tmp_cart_id = get_session('ss_cart_direct');
        if(!$tmp_cart_id) {
            $tmp_cart_id = get_uniqid();
            set_session('ss_cart_direct', $tmp_cart_id);
        }
    } else {
        // 비회원장바구니 cart id 쿠키설정
        if($default['de_guest_cart_use']) {
            $tmp_cart_id = preg_replace('/[^a-z0-9_\-]/i', '', get_cookie('ck_guest_cart_id'));
            if($tmp_cart_id) {
              set_session('ss_cart_id', $tmp_cart_id);
                //set_cookie('ck_guest_cart_id', $tmp_cart_id, ($default['de_cart_keep_term'] * 86400));
            } else {
                $tmp_cart_id = get_uniqid();
                set_session('ss_cart_id', $tmp_cart_id);
                set_cookie('ck_guest_cart_id', $tmp_cart_id, ($default['de_cart_keep_term'] * 86400));
            }
        } else {
            $tmp_cart_id = get_session('ss_cart_id');
            if(!$tmp_cart_id) {
                $tmp_cart_id = get_uniqid();
                set_session('ss_cart_id', $tmp_cart_id);
            }
        }
 
        // 보관된 회원장바구니 자료 cart id 변경
        if($member['mb_id'] && $tmp_cart_id) {
            $last_od_data = NULL;
            //마지막 od_id찾기
            $last_od_sql = "select
                                        od_id
                                    from
                                        {$g5['g5_shop_cart_table']}
                                    where
                                        mb_id = '{$member['mb_id']}' and
                                        ct_direct = '0' and
                                        ct_status = '쇼핑'
                                        LIMIT 1";
            //echo $last_od_sql.'<br>';
 
            $last_od_data = sql_fetch($last_od_sql);
            echo "tmp_cart_id : ".$tmp_cart_id.' last_od_data : '.$last_od_data['od_id'].'<br>';
 
            //폴더 이름 변경
            if($last_od_data[od_id]){//데이터가 있는 경우에만 폴더 변경 및 업데이트 실시
                $file_before_loc = "shop/order/$last_od_data[od_id]";
                $file_after_loc = "shop/order/$tmp_cart_id";
                echo "tmp_cart_id : ".$tmp_cart_id.' last_od_data : '.$last_od_data[od_id].'<br>';
                fullCopy($file_before_loc,$file_after_loc);
                if($file_before_loc != $file_after_loc && is_dir($file_before_loc)){//before / after 폴더가 다른 경우에만 삭제
                    rmdirAll($file_before_loc);
                }
                echo "tmp_cart_id : ".$tmp_cart_id.' last_od_data : '.$last_od_data[od_id].'<br>';
 
                //mb_id가 없고 od_id가 현재 $tmp_cart_id랑 같은 것은 mb_id를 추가
 
                $sql = " update {$g5['g5_shop_cart_table']}
                                set mb_id = '{$member['mb_id']}',od_id = '$tmp_cart_id'
                            where
                                od_id = '{$last_od_data['od_id']}' and
                                ct_direct = '0' and
                                ct_status = '쇼핑' ";
 
                echo "tmp_cart_id : ".$tmp_cart_id.' last_od_data : '.$last_od_data[od_id].'<br>';
                sql_query($sql);//여기 주석하면 정상동작
                echo "tmp_cart_id : ".$tmp_cart_id.' last_od_data : '.$last_od_data[od_id].'<br>';
            }
        }
    }
 

 

$last_od_sql의 쿼리의 값을 저장하고, $sql쿼리로 업데이트를 진행하게 되어져 있습니다.

그런데 $sql쿼리를 sql_query($sql)로 실행시키는 코드를 넣는 순간 $last_od_sql의 값이 $sql쿼리가 실행되고 나서의 값으로 변경 되는 현상이 있습니다.

뭔가 비동기 처리되어서 $last_od_sql이 나중에 실행되는것 같기도 한데 원인을 못찾고 있습니다.

 

긴 글 읽어주셔서 감사합니다;;

이 질문에 댓글 쓰기 :

답변 1

set_cart_id() 를 호출하는 부분을 찾아보세요

 

어디선가 값을 다르게 전달해서 한번더 호출할수도있을겁니다.

 

저도 비슷한 경우를 겪어서 찾는대 이를 먹은적이 있었네요

답변을 작성하시기 전에 로그인 해주세요.
전체 1,509
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT