메뉴 건너뛰기

프로그램언어

조회 수 20157 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

MySQL DB 중복여부 검사하여 없는 것만 추가


자료를 DB에 입력하는 걸 좀 편하게 하려고 중복검사 루틴을 만들어서 테스트를 했는데 계속 자료가 중복으로 들어가 저장된다.

서버 DB 자료를 엑셀로 내보내기 해서 중복검사를 하면 중복된 데이터는 전부 체크하여 표시를 해준다.

어디서 잘못된 걸까? 계속 머리 싸매다가 네이버 검색으로 하는데 자료 찾아도 잘 안나온다.

구글링을 해서 찾았더니 뭔가 힌트가 될만한 것이 검색된다.

넣어서 검사를 했더니 제대로 중복검사 여부를 체크한다.

WHERE eng = '".addslashes($line[0])."'

바로 이 부분 때문에 중복검사를 제대로 못했던 거다.

물론 '(Apostrophe) and " (Quotation mark) 가 없는 한글은 WHERE han = '$line[1]' 으로 검사해도 중복체크를 잘 한다.

중복검사 하는 가장 핵심적인 팁이라 할 수 있는 걸 찾게 되어 너무 기쁘다.


<?
$DB_CONNECT = isConnectDb($DB);
########### DB 연결 ###########
$file=fopen("insert_data.csv","r");
if(!$file){
    echo("Failed to open the file");
    exit;
}

while($line = fgetcsv($file,1000, ";")) { // 구분자는 ; 로 지정, 한줄씩 읽어드린 값을 끝라인까지 계속하라.
    $query = mysql_query("SELECT uid, eng FROM engtable WHERE eng = '".addslashes($line[0])."'",$DB_CONNECT);
    $dupcheck = mysql_fetch_array($query);
    if ($dupcheck['uid']) {
           $dup_line ++;
    } else {     // 중복된 자료가 없을 경우
        $eng = addslashes(trim($line[0]));    // 쿼터(')의 경우 역슬래쉬(\) 처리해야 DB에 저장됨

        $sql = "INSERT INTO $tblName (uid,eng,kor) VALUES (NULL,'$eng','$kor')";
        mysql_query($sql,$DB_CONNECT); // MYSQL DB에 저장
        $ok ++;
        if (($ok % 500) == 0) {
            echo(" $ok 건 저장");
            flush();
            sleep(3); //500개 저장할때마다 3초씩 쉰다.
        }
    $total_line++;
    } //중복체크 END 문
}

if ($dup_line > 0) {
    echo("중복 $dup_line 건 있음");
    echo "<br>";
}
echo("총 $total_line 자료 추가");
fclose ($file);
?>


List of Articles
번호 제목 날짜 조회 수
260 디렉토리 안의 파일의 내용들을 읽는 예 2016.12.23 19012
259 링크를 걸때 http 처리방법 2016.12.23 19019
258 $_SERVER 함수 2016.12.23 23943
257 문자열 추출하기 (substr) 2016.12.23 18867
256 문자열 치환 (str_replace) 2016.12.23 18812
255 로그인페이지에서 온 경우/로그인한 페이지로 이동 2016.12.23 18847
254 깨진 한글 체크 2016.12.23 20223
253 문자열 찾기 (strstr) 2016.12.23 18907
252 문자열에서 태그를 제거 (strip_tags) 2016.12.23 17522
251 preg_match (정규표현식 매치를 수행합니다) 2016.12.23 20843
250 문자열의 태그를 그대로 출력 (htmlspecialchars) 2016.12.23 18069
249 정규표현식 검사 도구 (ereg, eregi) 2016.12.23 18395
248 이스케이프 함수 (htmlentities) 2016.12.23 18375
247 문자열 뒤집기 (strrev) 2016.12.23 18950
246 대소문자 바꾸기 (strtoupper, strtolower) 2016.12.23 19658
245 $_FILES 2016.12.23 23847
244 정규 표현식 검색과 치환 (preg_replace) 2016.12.23 19012
243 정규표현식 매치를 수행 (preg_match) 2016.12.23 20051
242 explode - 문자열 나눔 2016.12.23 19943
241 파일 확장자 비교 2016.12.23 21970
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved