가장 좋은 방법은 mysql 데이터베이스에 중복 항목을 피하기 위해
PHP가장 좋은 방법은 mysql 데이터베이스에 중복 항목을 피하기 위해
id (pk), pageId (fk), name의 3 개의 열이있는 테이블이 있습니다. 나는 같은 페이지 ID와 이름으로 약 절반이 중복되는 테이블에 약 5000 개의 레코드를 덤프하는 PHP 스크립트를 가지고있다. pageId와 name의 조합은 고유해야합니다. PHP에서 스크립트를 반복하면서 중복 된 테이블에 저장되는 것을 방지하는 가장 좋은 방법은 무엇입니까?
해결법
-
==============================
1.첫 번째 단계는 테이블에 고유 한 키를 설정하는 것입니다.
첫 번째 단계는 테이블에 고유 한 키를 설정하는 것입니다.
ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name);
그런 다음 복제본이있을 때 원하는 것을 결정해야합니다. 당신은해야합니까?
-
==============================
2.mysql의 에러를 무시할 수도있다 : INSERT IGNORE INTO TABLE ... 키 에러를 무시하고 그 삽입을 건너 뛰고 다음으로 넘어 간다.
mysql의 에러를 무시할 수도있다 : INSERT IGNORE INTO TABLE ... 키 에러를 무시하고 그 삽입을 건너 뛰고 다음으로 넘어 간다.
-
==============================
3.PageID 및 Name을 MySQL 데이터베이스의 고유 인덱스로 설정할 수 있습니다. 이 방법으로 행을 삽입하면 PHP에서 무시할 수있는 오류가 발생하고 다음 행으로 넘어갈 수 있습니다.
PageID 및 Name을 MySQL 데이터베이스의 고유 인덱스로 설정할 수 있습니다. 이 방법으로 행을 삽입하면 PHP에서 무시할 수있는 오류가 발생하고 다음 행으로 넘어갈 수 있습니다.
행을 개별적으로 삽입한다고 가정합니다. AKA :
foreach($large_data as $fields) { mysql_query("INSERT INTO TABLE (`Something`) VALUES('".$fields['something']."'); }
-
==============================
4.당신이 할 수있는 mysql 지점에서
당신이 할 수있는 mysql 지점에서
alter table YOURTABLE add unique index(pageId, name);
귀하의 말씨가 정확하고 당신이 할 수있는 PHP에서 그것을하고 싶다면
$already_done = array(); foreach ($records as $record) { $unique_hash = md5($record['name'].$record['pageId']); if (!in_array($unique_hash, $already_done)) { $already_done[] = $unique_hash; // sql insert here } }
어느 쪽이든 당신을 잘해야합니다.
from https://stackoverflow.com/questions/2219786/best-way-to-avoid-duplicate-entry-into-mysql-database by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
MySQL에 쓸 때 TextArea에서 줄 바꿈을 유지합니다. (0) | 2018.09.12 |
---|---|
LIMIT이 적용되기 전에 결과를 얻는 가장 좋은 방법 (0) | 2018.09.12 |
PHP 사이트에 대한 브라우저 캐시를 방지하는 방법 (0) | 2018.09.12 |
사용자 시간대 가져 오기 [중복] (0) | 2018.09.12 |
PHP에서 mod_rewrite가 활성화되었는지 확인하는 방법은 무엇입니까? (0) | 2018.09.12 |