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

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

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

 

Copy
// 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개

채택된 답변
+20 포인트

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

 

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

 

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

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

답변에 대한 댓글 3개

네 감사합니다.

저도 그거를 생각하고 set_cart_id()에 들어가면 echo 'in set_cart_id'.'<br>';를 적어놨었는데 한번만 출력되는 것을 보니 정상인거 같고..어렵네요.
다른 페이지에서 set_cart_id가 한번 더 호출되는거를 확인했습니다.
감사합니다~
@하이바네 찾으셔서 해결하셨다니 다행이네요 ^^

수고하세요

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

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

로그인
🐛 버그신고