【发布时间】:2020-12-12 16:12:59
【问题描述】:
我创建了一个 csv 到 mysql 数据库导入器。 代码-
<?php
include_once("connection.php");
if(isset($_POST["import"])){
$filename = $_FILES["file"]["tmp_name"];
if($_FILES["file"]["size"] > 0){
$file = fopen($filename, "r");
while(($column = fgetcsv($file,10000, ",")) !== FALSE){
$sqlInsert = "INSERT INTO datasets (name,email,phone) values('" . $column[0] . "', '". $column[1] . "', '" . $column[2] . "')";
$result = mysqli_query($con,$sqlInsert);
if(!empty($result)){
echo "CSV data imported into database !";
}
else{
echo "Error importing data into database ...";
}
}
}
}
?>
表格代码是-
<form class="form-container my-5" action="backend/api.php" method="POST" enctype="multipart/form-data">
<div class="form-group">
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroupFileAddon01">Upload</span>
</div>
<div class="custom-file">
<input type="file" name="file" accept=".csv" class="custom-file-input" id="inputGroupFile01" aria-describedby="inputGroupFileAddon01">
<label class="custom-file-label" for="inputGroupFile01">Choose file</label>
</div>
</div>
</div>
<button type="submit" name="import" class="btn btn-primary">Submit</button>
</form>
所以,我将意外数据标记为红色。我不知道为什么会这样显示?代码有错误吗?
【问题讨论】:
-
没有多余的记录。您的代码将 csv 文件的全部内容存储在数据库中
-
csv 的第一行是标题,您需要跳过它。
-
@RolandStarke 跳过它?有没有办法让它不在数据库中显示?
-
啊,是的,我的意思是跳过插入,因此它不在数据库中。例如,您可以在 while 循环之前添加:
fgetcsv($file,10000, ","); //read first line and throw away to skip header或在您的 while 循环中执行if($column[1] === 'email') { continue; } -
@Dharman 是的,我现在将更改它.. 只是快速测试一些东西。无论如何感谢您的提醒