2015-05-29 4 views
1

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

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); 
    } 
    } 
} 
?> 

ответ

1

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

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

+0

но я хочу показать список дубликатов записей пользователю, но с этим решением это невозможно .. –

+1

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

+0

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

Смежные вопросы