2016-06-25 9 views
0

Excelシートからデータを取得し、データベースに保存しています。データを正常に保存しています。私はデータベースに2つのテーブルを作成しましたが、1つはExcelシート&のストアから値をインポートし、もう1つは一時的に格納されたテーブルから値を取得し、重複レコードもチェックします。 2番目のテーブルにデータを挿入できますが、元のテーブルに保存する前に重複レコードをチェックする方法を提案してください。
データベースに保存する前にシートの値を重複してチェックする方法

これはコードです:

<?php 
if(isset($_POST["submit"])) 
{ 
$file = $_FILES['file']['tmp_name']; 
$handle = fopen($file, "r"); 
$c = 0; 
$row = 1; 
while(($filesop = fgetcsv($handle, 1000, ",")) !== false) 
{ 
$row++; 
if($row != 1) 
{ 

$custid = $filesop[0]; 
$zone = $filesop[1]; 
$city = $filesop[2]; 
$category = $filesop[3]; 
$focus = $filesop[4]; 
$customer_type = $filesop[5]; 
$lead_source = $filesop[6]; 
$exhibition = $filesop[7]; 
$organization_name = $filesop[8]; 
$assign_to = $filesop[9]; 
$description = $filesop[10]; 
$division = $filesop[11]; 
$product = $filesop[12]; 
$grade = $filesop[13]; 
$potential = $filesop[14]; 
$firstname = $filesop[15]; 
$lastname = $filesop[16]; 
$designation = $filesop[17]; 
$mobile = $filesop[18]; 
$primary_phone = $filesop[19]; 
$primary_email = $filesop[20]; 
$address_type = $filesop[21]; 
$address1 = $filesop[22]; 
$address2 = $filesop[23]; 
$state = $filesop[24]; 
$country = $filesop[25]; 


$hgf = "INSERT INTO temp_const set custid='$name', zone='$zone',  city='$city', category='$category', focus='$focus',  customer_type='$customer_type', lead_source='$lead_source',  exhibition='$exhibition', organization_name='$organization_name',  assign_to='$assign_to', description='$description', division='$division',  product='$product', grade='$grade', potential='$potential',  firstname='$firstname', lastname='$lastname', designation='$designation',  mobile='$mobile', primary_phone='$primary_phone',  primary_email='$primary_email', address_type='$address_type',  address1='$address1', address2='$address2', state='$state', country='$country'  "; 

$sql = mysql_query($hgf); 
$c = $c + 1; 
} 
} 

if($sql){ 
echo "You database has imported successfully. You have inserted ". $c  ."recoreds"; 
}else{ 
echo " Sorry! There is some problem."; 
} 

} 
?> 

答えて

2

あなたが重複をチェックするフィールドに一意のインデックスを作成することができ、それはFIELDA、FIELDBとFIELDC

ALTER TABLE destTable add unique key idx_abc (fieldA,fieldB,fieldC); 

であると言うことができますその後、あなたのtmpテーブルをオプションを持つdestTableにコピーすることができます。IGNORE

INSERT IGNORE INTO destTable SELECT * FROM temp_const; 

または、必要なフィールドのみを使用してください。

+0

あなたの答えに感謝します:) –

関連する問題