1

我这里有这段代码,它允许我将数据从 csv 文件导入数据库,现在它的作用是在插入之前截断表,我之前尝试删除截断表,但它不会通过数据。我的意思是如何在这里修改此代码?我只需要它来插入数据,而不需要清空当前表!

谢谢..

$deleterecords = "TRUNCATE TABLE imovo"; //empty the table of its current records
mysql_query($deleterecords);

//Upload File
if (isset($_POST['submit'])) {
    if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
        echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>";
        echo "<h2>Displaying contents:</h2>";
        readfile($_FILES['filename']['tmp_name']);
    }

    //Import uploaded file to Database
    $handle = fopen($_FILES['filename']['tmp_name'], "r");

    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $import="INSERT into imovo(date,time,location,rbpos_id,mobile_number) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')";

        mysql_query($import) or die(mysql_error());
    }

    fclose($handle);

    print "Import done";

    //view upload form
}else {


}
4

3 回答 3

3

“我之前尝试过删除截断表,但它不会传递数据。”

也许是因为您有唯一索引并尝试插入重复记录。

于 2012-08-31T09:10:47.777 回答
0

我只是想,你的表有一个独特的列......所以如果你不截断表,你就不能插入存在的记录......

所以你必须做的:

  1. 检查记录是否存在

1a) 如果为真...使用 UPDATE

1b) 如果为假 .. 使用 INSERT

  1. 还要检查您的 CSV 中是否不再有记录,然后您必须使用 DELETE

...

所以你看,处理所有现有记录并不简单

于 2012-08-31T09:14:12.240 回答
0

您上传的文件是否包含一些以前上传的数据?如果是这种情况并且您知道您可以使用

INSERT IGNORE into `imovo`

或者如果你想替换一些重复的行做 REPLACE

REPLACE into `imovo`

这将根据 PRIMARY KEY 或 UNIQUE 索引替换重复的行

http://dev.mysql.com/doc/refman/5.0/en/replace.html

于 2012-08-31T09:19:01.607 回答