2011-02-08 3 views
0

저는 CodeIgniter에서 csv 파일의 내용을 데이터베이스에 쓰는 작은 응용 프로그램을 작성하고 있지만 작성하기 전에 중복을 확인하는 데 어려움이 있습니다. 이것은 매우 일반적인 작업이기 때문에 전문가 (당신)가 어떻게하는지 궁금합니다. "! 당신은 형편"CodeIgniter : 입력하기 전에 중복 된 DB 테이블을 어떻게 확인합니까?

 $sql = "SELECT * FROM salesperson WHERE salesperson_name='" . $csvarray['salesperson_name'][$i] . "'"; 
     $already_exists = $this->db->query($sql); 

     if (sizeof($already_exists) > 0) { 

      //add to database 

     } 

의 모든 짧은 모든 입력 : 상황과 비교를 위해, 여기 내 (현재 비 작동) 코드 (나는 이미이 시간에 두 번씩 내 두뇌에서 듣는다) 크게 감사 할 것입니다. 감사. 첫째

답변

2

위와 같이 비교는 "== 0"이 아닌 "> 0"이어야합니다.

또한과 같이, 대신 sizeof 연산자를 사용 NUM_ROWS 방법 내장 CodeIgniters를 사용할 수 있습니다

$sql = "your query"; 
$query = $this->db->query($sql); 

if ($query->num_rows() == 0) { 
    // no duplicates found, add new record 
} 

를 보조 노트로서, 당신은 CodeIgniter를를 사용하는 경우는 당신의 쿼리를 작성하는 액티브 레코드를 사용하는 보람 SQL을 작성하는 대신. 여기에서 자세히 알아볼 수 있습니다. CodeIgniter - Active Record

1

당신은 아마 원하는 (보다는> 0)

if (sizeof($already_exists) == 0) { 
    //add to database 
} 

또한 다음 몇 가지 규칙적인 SQL-로 청소 한 후 다시 밀어 수있는 임시 준비 테이블에 모든 데이터를 밀어 단지 수 당신의 스테이징 테이블.

MySQL을 사용 당신 펀트 촬영 (그 중 하나 또는 phping 경우 포스트 그레스) 당신은이 (http://www.cyberciti.biz/faq/howto-removing-eliminating-duplicates-from-a-mysql-table/에서 촬영)을 시도 할 수 당신은 당신의 .ID을 변경해야합니다 기본 키

delete from salesperson_temptable 
    USING salesperson_temptable, salesperson_temptable as vtable 
    WHERE (NOT salesperson_temptable.ID=vtable.ID) 
     AND (salesperson_temptable.salesperson_name=vtable.salesperson_name) 

salesperson_temable의 내용을 검토하면 영업 담당자 테이블에 다시 삽입 할 수 있습니다.

관련 문제