предупредить дубликаты записей в CSV-загрузке

1

мой код загрузки csv похож на это, чтобы предупредить о повторяющихся записях, которые уже существуют в базе данных. Я получаю результат с переменной состояния $, что я должен делать, чтобы предупреждать все дубликаты записей, что является способом оповещения о каждом дублировании записей

if(isset($_POST["Import"]))
{
  $filename=$_FILES["file"]["tmp_name"];
  if($_FILES["file"]["size"] > 0)
  { 

    $row = 1;
    if (($handle = fopen("$filename", "r")) !== FALSE) 
    {
        while (($data = fgetcsv($handle)) !== FALSE) 
        {
            $num = count($data);

            $row++;
            for ($c=0; $c < $num; $c++) {

                  if($c!="" && $c+1!="" && $c+2!=""){              
                    $a[] =  $data[$c];

                  }          
            }
        }
        $total = count($a);
        $m=0;
        $k = 1;
        for ($c=0; $c < $total; $c++) 
        {

           $address[$m][] = $a[$c] ;
           $z  = $address[$m][0];
           $q  = $address[$m][1];
           $q .= $address[$m][2];
           $q .= $address[$m][3];
           $q .= $address[$m][4];
           $q .= $address[$m][5];
           $q .= $address[$m][6];
           $q .= $address[$m][7];
           $q .= $address[$m][8];
           $q .= $address[$m][9];
           if($a[$c]=="")
           {
              if($k!=1)
              {

                $selectcon = "SELECT user_id FROM contact
                                WHERE user_id = '".$z."'";

                $selectRes = mysql_query($selectcon);
                if($rows = mysql_fetch_array($selectRes))
                {
                  $user_id = $rows['user_id'];

                  if($user_id == $z)
                  {
                    $staus = 1;
                  }
                  else
                  {
                    $staus = 1;
                  }
                }

                  $insertParty = "INSERT INTO contact(user_id)values('$z')";
                  $res = mysql_query($insertParty);
                  $contact_id = mysql_insert_id();


                  $insertAddress = "INSERT INTO address(contact_id,address)VALUES($contact_id,'$q')";
                  $insertAddressRes = mysql_query($insertAddress);
                  if(!$insertAddressRes)
                  {
                    echo "<sctipt>";
                    echo "sweetAlert('oops','Import Data Fail','error')";
                    echo "</sctipt>";
                  }
                  else
                  {
                     echo "<script>";
                     echo "swal('Sucess!', 'File Imported Sucessfully!','success')";
                     echo "</script>";
                  }
                  $m++;
                }
                $k++;

          }

        }
      fclose($handle);
    }
  }
}
?>
Теги:
csv

1 ответ

1

Вам нужно сделать уникальную строку внутри базы данных. Вы не можете сделать это с помощью PHP.

Добавьте все столбцы в один индекс UNIQUE, вы не можете вставлять повторяющиеся строки в эту таблицу.

  • 0
    но я хочу, чтобы показать список дубликатов записей для пользователя, но с этим решением это не возможно ..
  • 1
    1. Вы можете использовать SELECT перед INSERT, чтобы проверить, существует ли эта строка или нет. 2. Используя индекс строки UNIQUE, после выполнения команды вставки проверьте, была ли она успешной или нет, если нет, проверьте, существует ли эта строка или нет. Если он уже существует, значит, этот ряд уже существует. ПРИМЕЧАНИЕ. Если большинство строк дублируются, используйте первый подход, в противном случае - второй (из-за производительности).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню