php - 使用php将CSV文件导入mysql时如何删除重复的行记录?

标签 php mysql

将当前 CSV 文件导入数据库时​​,我需要删除重复记录。我的文件已成功更新,但是当我尝试再次上传相同的文件时,它立即再次插入其中。如果我导入文件,有什么方法可以删除重复记录吗?

<?
if(isset($_POST["submit"])){
    $file = $_FILES['file']['tmp_name'];
    //echo 'upload file name: '.$file.' ';
    $handle = fopen($file, "r");
    $c = 0;
    $count =0;

    while(($filesop = fgetcsv($handle, 1000, ",")) !== false)
    {
        $count ++;
        $ID = $filesop[0];
        $Name = $filesop[1];
        $Contact = $filesop[2];
        $Email =$filesop[3];

        if($count>1){
        $sql = "INSERT INTO clients(id,name,contact,email,)VALUES($ID,'$Name',$Contact,'$Email',')";
        $resultsql = mysqli_query($link, $sql);
        //echo $resultsql; //how am i going to remove duplicates when if there is a duplicate record ?

最佳答案

1)在插入之前,检查现有数据。

<?php

if(isset($_POST["submit"])){
    $file = $_FILES['file']['tmp_name'];
    //echo 'upload file name: '.$file.' ';
    $handle = fopen($file, "r");
    $c = 0;
    $count =0;

    while(($filesop = fgetcsv($handle, 1000, ",")) !== false)
    {
        $count ++;
        $ID = $filesop[0];
        $Name = $filesop[1];
        $Contact = $filesop[2];
        $Email =$filesop[3];

        $checkExistingData = "SELECT * FROM clients WHERE name='$Name' AND contact='$Contact' AND email='$Email'";
        $resultcheckExistingData = mysqli_query($link, $checkExistingData);
        $countExistingData = mysqli_num_rows($resultcheckExistingData);     

        if($countExistingData == 0)
        {
            if($count>1) {
                $sql = "INSERT INTO clients(id,name,contact,email,)VALUES($ID,'$Name',$Contact,'$Email',')";
                $resultsql = mysqli_query($link, $sql);
                //echo $resultsql; //how am i going to remove duplicates when if there is a duplicate record ?
        .
        .
        }
.
.
}?>

2) 如果插入数据并且您想要从表中删除重复的行。你也可以试试这个。

DELETE c1 FROM clients c1, clients c2 WHERE c1.name = c2.name AND c1.contact = c2.contact AND c1.email = c2.email AND c1.id > c2.id;

关于php - 使用php将CSV文件导入mysql时如何删除重复的行记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34878903/

相关文章:

php - for循环在php中不能正常工作

javascript - $_POST 与 $http POST 不能很好地配合

javascript - 在 CK Editor 中访问选项卡数据

php - MySQL : how to create a user and how to access the mysql localhost server using php

mysql - 在 Rails 上的架构中设置全局变量

php - Laravel 5 返回 JSON 或 View 取决于是否使用 ajax

php - 使用 paise 值将数字转换为印度货币格式的单词

php - 在 url 中获取产品名称而不是 id php

mysql - 将列作为行返回

php - 使用 JSON php 脚本在 Android 应用程序中的 MySQL 服务器中显示保存在 varchar (utf8_unicode_ci) 中的语言文本