2014-10-01 2 views
0

다음 상황이 발생했습니다.INSERT 문에없는 행을 삭제합니다. mysql

인벤토리를 업로드하는 mysql 테이블이 있습니다. 테이블의 구조는 같다 다음과 같이

사실
<pre> 
    <table> 
     <thead> 
      <tr> 
       <th>SKU</th> 
       <th>price</th> 
       <th>quantity</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
       <td>393939</td> 
       <td>39.99</td> 
       <td>32</td> 
      </tr> 
     </tbody> 
    </table> 
</pre> 

내가 할 :

mysqli_query(
    $sql, 
    "INSERT IGNORE INTO de_minmaxpreis(sku, price, quantity) VALUES ('$teile[3]', '$teile[4]', '$teile[5]')" 
); 

을 내가 가져 오는 데 사용하는 inventoryfile에서 촬영 한 데이터가있는 경우, 지금, 나는 할 데이터가있는 ISN 그 인벤토리 파일의 't'이 테이블에서 삭제됩니다. 가격 책정 내용이 변경되었을 수 있으므로이 파일의 우선 순위가 mySql 테이블에 있기 때문에 새 파일을 가져 오기 전에 테이블을 잘라낼 수 없습니다. (최신 정보).

흠, 누군가 내 질문을 이해하고 도움이되기를 바랍니다.

+0

두 테이블 모두에 어떤 종류의 ID가 있습니까? 'ID가 아닌 위치에서 삭제 (ID ID FROM 가져 오기 테이블)'할 수 있습니까? – Mihai

+1

@Mihai 아니요, 테이블에서 가져 오지 않고 파일에서 가져옵니다. 하지만 가져 오기 테이블과 가져 오기 테이블에서 고유 한 SKU 번호가 있습니다.이 문을 파일의 삽입 문과 함께 사용할 수 있습니까? (DELETE FROM t WHERE SKU NOT $ array) – baao

+0

이것은 무서워 보인다. ** 사용자 매개 변수가 [제대로 이스케이프 처리]되어 있습니까? (http://bobby-tables.com/php)? mysql_query는 쓸데없는 인터페이스이므로 새로운 응용 프로그램에서는 사용해서는 안되며 PHP의 이후 버전에서는 제거 될 것입니다. [PDO와 같은 현대적인 대체물은 배우기 어렵지 않습니다.] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/). PHP를 처음 사용하는 분이라면 [PHP The Right Way] (http://www.phptherightway.com/)와 같은 안내서가 모범 사례를 설명하는 데 도움이 될 것입니다. – tadman

답변

0

내가 맞으면 새로운 SKU를 삽입하고 새 가져 오기에없는 SKU를 삭제해야합니다. 새 수량에서 "수량"과 같은 것을 업데이트 할 필요가 없음을 의미합니다. 그렇게 할 수 있다면 sku이 고유하다고 가정합니다.

$sql="select sku from de_minmaxpreis"; 
//get the skus in array like $oldskus[]='somesku'; 

//make a new data array look like $newDataSkus[$sku]=$dataArray; 
foreach($oldskus as $oldSku){ 
    //here if odlsku is not present in new data delete it from a DB 
    if(! array_key_exists($oldSku , $newDataSkus){ 
    //old sku not present anymore delete it 
    $sql="delete from de_minmaxpreis .... " 
    }else{ 
    //as sku is in DB remove that sku from newData at the end you will get data that is new and needs to be inserted 
     unset($newDataSkus[$oldSku]; 
    } 

} 
//finally inset new data 
foreach($newDataSkus as $tiele){ 
mysqli_query(
    $dbCon, 
    "INSERT INTO de_minmaxpreis(sku, price, quantity) VALUES ('$teile[3]', '$teile[4]', '$teile[5]')" 
); 
} 
관련 문제