로그기록을 만들었는 데... 같은값이 2개씩 등록됩니다.

로그기록을 만들었는 데... 같은값이 2개씩 등록됩니다.

QA

로그기록을 만들었는 데... 같은값이 2개씩 등록됩니다.

답변 4

본문


    $user_no = $_GET["user_id"];
    $name = $_GET["name"];
    $item_name = $_GET["item_name"];

    if( $db->insert("edu_log", "
        num='$user_no',
        name='$name',
        item_name='테스트',
        item_num='$logd_name',
        regdate= now() "));
 

 

아래 이미지를 보시면 동일 데이타 가 한번에 두개씩 등록됩니다.

왜그런지 이유 좀 알려줄래요?

 

3554585928_1690591545.0023.jpg

 

감사드림.

이 질문에 댓글 쓰기 :

답변 4

$_GET은 URL에 동일 매개변수가 두 번 이상 포함되어 있으면 배열로 처치될가능성이 많습니다. 이럴땐 변수를 변경 해보면 알수 알수있을것 같네요
 

해당 페이지가 2번 호출이 되는거 같습니다.

저장되는 부분을 점검하시면 될듯합니다.

 

현 코드 맨 위에 echo "한번만 실행되나 검사!"; 이코드를 삽입하고 테스트해보세요.

만일 위의 텍스트가 두번 출력되어지면 분명 두번 실행된다는것을 의미합니다.

만일 그렇지 않다면 DB쪽 문제일 가능성이 큽니다. 그런 경우 해당 디비와 테이블의 구조에 대한 구체적인 분석이 필요할거 같습니다.

그러면 중복삽입을 막기 위해 unique와 같은 index설정을 해주어야 할거 같습니다.
num, name, item_name, item_num 이렇게 4개의 필드로 조합된 unique index를 설정하면 중복삽입문제는 해결되나.... 여전히 왜 중복삽입되는지는 이상하군요,

감사합니다. 뭘 해도 안되눈군요.

GROUP BY regdate

이렇게 해서 중복값중 하나만 가져오는걸로 처리했네요. 

주말 잘 보내세요.

그래도 혹시몰르니 GROUP BY regdate 쓰는 것을 자재하시고 리솔트를 한번 해봐서 원인을 찾아보는게 낮을 듯 합니다.

$result = $db->insert("edu_log", "
    num='$user_no',
    name='$name',
    item_name='테스트',
    item_num='$logd_name',
    regdate= now() ");

if ($result) {
    echo "데이터가 성공적으로 저장되었습니다.";
} else {
    echo "데이터 저장에 실패했습니다. 관리자에게 문의해주세요.";
    echo "오류 메시지: " . $db->lastErrorMsg();
}

답변을 작성하시기 전에 로그인 해주세요.
전체 3
© SIRSOFT
현재 페이지 제일 처음으로