有什么方法可以在我从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";
}
?>
答案 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