【发布时间】:2016-11-07 08:09:25
【问题描述】:
正如标题中所解释的,我正在尝试通过将 csv 文件上传到我的 php 页面来将数据导入到我的表中。 这是我从EggSlab得到的代码
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "Test";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
<html>
<body>
<form name="import" method="post" enctype="multipart/form-data">
<input type="file" name="file" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
<?php
if(isset($_POST["submit"]))
{
$file = $_FILES['file']['tmp_name'];
$handle = fopen($file, "r");
$c = 0;
while(($filesop = fgetcsv($handle, 1000, ",")) !== false)
{
$name = $filesop[0];
$email = $filesop[1];
$sql = "INSERT INTO `xl` (`Name`, `Email`) VALUES ('$name','$email')";
}
if ($conn->query($sql) === TRUE) {
echo "You database has imported successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
?>
</body>
</html>
问题是,提交文件时,只有文件的最后一行被插入到表中。任何修改建议以使代码插入 csv 文件的每一行?
【问题讨论】:
-
对 while 循环中的每次迭代执行查询。在这里,你只是在最后执行请求,所以一次,它是你的 csv 的最后一行
-
所以,我不确定,但请尝试在 while 循环中移动 if else 语句
-
查询在while循环内。
-
是的,但是查询的执行不是
-
使用
LOAD DATA INFILE会快很多