导入表格时避免重复

时间:2012-02-05 01:12:35

标签: php mysql excel

有什么方法可以在我从csv文件导入时停止输入数据库的一行数据,以避免数据库中出现重复..

注意:虽然不允许重复项输入,但是输入到数据库中。

这是我正在处理的导入脚本....

<?php session_start(); ?>
<?php require('includes/dbconnect.php'); ?>
<?php require 'includes/header.inc.php'; ?>

<?php
 if(isset($_POST['SUBMIT']))
 {
 $fname = $_FILES['csv_file']['name'];//Acquire the name of the file
 $chk_ext = explode(".",$fname);

  $filename = $_FILES['csv_file']['tmp_name'];
   $handle = fopen($filename, "r");//Open the file for readability
     while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
     {
        $sql = "INSERT into biodata                (student_number, fname, lname,        level) values('$data[0]','$data               [1]','$data[2]','$data[3])";
  mysql_query($sql) or die                          (mysql_error());
     }
     fclose($handle);
     echo "Successfully Imported";
    }
   else
   {
      echo "Invalid File";
   }


   ?>

2 个答案:

答案 0 :(得分:1)

如果student_number列是主键,则此脚本不允许您插入具有相同编号的行,并且一旦找到就会死亡。

如果确实如此,您只需将INSERT INTO table VALUES (...)更改为INSERT INTO table VALUES (...) ON DUPLICATE KEY UPDATE student_number = student_number即可在发生错误时忽略错误。

参考:http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html

答案 1 :(得分:1)

INSERT INTO表VALUES(...)ON DUPLICATE KEYUPDATE student_number = student_number