我在这里有这个代码,它允许我将数据从csv文件导入到数据库中,现在这样做就是在插入之前截断表,我试图删除truncate table之前但是它不会传递数据。我的意思是如何在这里修改此代码?我需要它只是为了插入数据,而不是清空当前的表!
谢谢..
$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 {
}
答案 0 :(得分:3)
&#34;我之前尝试删除截断表,但它不会传递数据。&#34;
可能是因为您有唯一索引并尝试插入重复记录。
答案 1 :(得分:0)
我只是想,你的表有一个唯一的列...所以如果你不截断表,就不能插入存在的记录......
所以你需要做的事情:
1a)如果是......请使用UPDATE
1b)if false ..使用INSERT
...
所以你看,处理所有现有记录并不是很简单
答案 2 :(得分:0)
您上传的文件是否包含一些以前上传的数据? 如果是这种情况,你就知道了,你可以使用
INSERT IGNORE into `imovo`
或者如果要替换一些重复的行,请执行REPLACE
REPLACE into `imovo`
这将取代重复的行,具体取决于PRIMARY KEY或UNIQUE索引