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() 를 호출하는 부분을 찾아보세요
어디선가 값을 다르게 전달해서 한번더 호출할수도있을겁니다.
저도 비슷한 경우를 겪어서 찾는대 이를 먹은적이 있었네요
답변을 작성하시기 전에 로그인 해주세요.