2009-06-11 3 views
1

JSON 개체에서 문자열 배열을 가져오고 있습니다. 이 문자열을 DB에 저장하고 싶습니다. 단, 해당 문자열이 아직없는 경우에만 저장하십시오. DB에 이미있는 내용과 내가 입력하려는 내용을 비교하고 일치 항목을 제외시키는 가장 좋은 방법은 무엇입니까?레코드가 이미 존재하지 않는 경우에만 MySQL 테이블에 추가하는 방법은 무엇입니까?

PHP와 MySQL을 사용하고 있습니다.

+0

[INSERT ... ON DUPLICATE KEY UPDATE] (http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html) 참고 사항 : [ "INSERT IGNORE" 대 "INSERT ... 중복 키 업데이트"] (http://stackoverflow.com/questions/548541/insert-ignore-vs-insert-on-duplicate-key-update) – troelskn

답변

5

는 문자열이 이미 존재하는 경우 만 기록을 떠나고 싶어한다 무엇을 설명하기 때문에, 당신이 아마 원하는 것은 INSERTIGNORE 수정 (즉 당신이 INSERT IGNORE ...을). 중복 키를 찾으면 조회가 수행되지 않습니다. 물론, 삽입하려는 문자열 필드에 고유 한 키가 있어야합니다.

2

MySql에서는 "ignore"옵션과 함께 insert 문을 사용할 수 있습니다.이 옵션은 고유 한 필드가 기존 행의 필드와 일치 할 경우 행을 삽입하지 않습니다. 테이블에는 관련 필드가 포함 된 고유성 제약 조건이 있어야합니다.

0

아주 간단한 예 :

테이블 : 사용자 귀하의 필드 : users_id, USER_NAME, ZIP_CODE는, 고유 색인 생성 : 사용자 (USER_NAME, ZIP_CODE 생성) VALUES INTO _ 이름

INSERT를 ('joe', 75034, '2009-06-11') 중복 키 업데이트 ON users_id = LAST_INSERT_ID (ID)

user_name에는 고유 인덱스가 있습니다. 그래서 한 번 이상 추가 할 수 없습니다. 위의 SQL을 사용하면 처음에는 잘 추가됩니다. 두 번째로 실제로 삽입하지 않습니다. on duplicate key가 설정되는 방식으로, 이제 PHP로 mysql에서 마지막 insert id를 가져올 수 있고, 그것이 참인 insert인지 duplicate인지를 users_id가 알 수 있습니다.

관련 문제