如何在存储到数据库之前检查Excel工作表值的重复值

时间:2016-06-25 14:20:58

标签: php mysql excel

我从excel表中获取数据并将其存储在数据库中。它正在成功存储数据。我在数据库中创建了两个表,一个是从excel表&中导入值。临时存储和其他是从临时存储的表中获取值,也检查重复的记录。 我可以在第二个表中插入数据,但请建议我在存储到原始表之前检查重复记录。

这是代码:

<?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.";
}

}
?>

1 个答案:

答案 0 :(得分:2)

您可以在要检查复制的字段上创建唯一索引,假设它是fieldA,fieldB和fieldC

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

之后你可以使用 IGNORE

选项将你的tmp表复制到destTable中
INSERT IGNORE INTO destTable SELECT * FROM temp_const;

或仅使用您想要的字段。