까만도둑님 질문 중. 여러명 쪽지 보내기에서. 까막도둑님. 한번 보시길... > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

까만도둑님 질문 중. 여러명 쪽지 보내기에서. 까막도둑님. 한번 보시길... 정보

까만도둑님 질문 중. 여러명 쪽지 보내기에서. 까막도둑님. 한번 보시길...

본문

코멘트에 달려고 했는데. 해결 하셨다니. 그냥 지나 치실 것 같아. 새로 글씁니다.
원인을 아셔야, 다음에 유사한 일이 있으면. 바로 할 수있겠죠. 그래서 이해를 시켜 드릴려고 합니다.

memo table 스키마에서
주키 (기본키) me_id 가 잡혀 있더군요.
만약에 me_id 키값이 auto_increment (자동 증가값)으로 설정 되어있으면, 문제가 안되는데요.
참고! 자동으로 하나씩 값이 올라가니. 중복 될 일이 없겠지요.

현재는 자동증가값으로 설정이 안돼어 있습니다.그래서 아래의 코드처럼 수동적으로 키값을 +1 로 증가 시켜서. insert 를 하는데요.
$tmp_row = sql_fetch(" select max(me_id) as max_me_id from $g4[memo_table] ");
$me_id = $tmp_row[max_me_id] + 1;

루프를 돌릴 시에는 for 문이든, foreach 문이든, $me_id 값이 이미 잡혀 있기때문에. 계속 증가를 할 수없겠지요.
그럼으로, 증가를 시킬시에는 아래 처럼 반복문 안에 들어 가면 되겠습니다.


$okuser=array('test','test1');

$me_id = $tmp_row[max_me_id] + 1;
$userNum = count($okuser);
for( $i=0; $i<$userNum; $i++ )
{
    $tmp_row = sql_fetch(" select max(me_id) as max_me_id from $g4[memo_table] ");
    $me_id = $tmp_row[max_me_id] + 1;

    $sql = " insert into $g4[memo_table]
                    set me_id = '$me_id',
                    me_recv_mb_id = '{$okuser[$i]}',
                    me_send_mb_id = '$mb_id',
                    me_send_datetime = '$g4[time_ymdhis]',
                    me_memo = '{$mb_name}님이 회원으로 가입하셨습니다^^' ";
    sql_query($sql);
}

그런데. 반복문 안에서. select로 필드를 구해야 하고, insert 를 새로 입력하는데. 받는 회원 수 많큼, 루프가 돌아가니.
아주 비효율적입니다..

예로 받는 사람이. 10명이면. 10번의 select 문을 구해야 한다 이말입니다.

그러므로,

$tmp_row = sql_fetch(" select max(me_id) as max_me_id from $g4[memo_table] ");
$me_id = $tmp_row[max_me_id] + 1;
// 여기까지 먼저 구해 놓고. 아래식으로 하면, 되겠지요? (정확히 실험을 하지 않았음으로 어찌 될지는 모르겠습니다만)
//하지만. 좀 더 연구하면. 불필요한, 서버 요청을 안해도 충분히 원하는데로 구할 수 있을 것입니다.

$okuser=array('test','test1');

$me_id = $tmp_row[max_me_id] + 1;
$userNum = count($okuser);

for( $i=0; $i<$userNum; $i++ )
{
    $sql = " insert into $g4[memo_table]
                    set me_id = '$me_id + $i',
                    me_recv_mb_id = '{$okuser[$i]}',
                    me_send_mb_id = '$mb_id',
                    me_send_datetime = '$g4[time_ymdhis]',
                    me_memo = '{$mb_name}님이 회원으로 가입하셨습니다^^' ";
    sql_query($sql);
}

댓글 전체

전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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