我试图将其传递给 fgetcsv
函数,以将 CSV
文件的所有行输出到我的数据库中。这似乎是相当标准的功能,但它仍然不起作用。
这是我尝试运行的代码:
<?php
$file = $_FILES['records_csv']['tmp_name'];
$handle = fopen($file,"r");
while(($csv = fgetcsv($handle,1000,",")) !== false) {
$sql = "INSERT INTO records(artist, title, type, size, year, status)
VALUES ('".$csv[0]."', '".$csv[1]."', '".$csv[2]."', '".$csv[3]."','".$csv[4]."','ACTIVE')";
}
if ($conn->query($sql) === TRUE) {
echo "File uploaded successfully!";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
当我运行它时,它似乎只将文件的第二行输入数据库?我不知道为什么会这样?
我的 CSV 文件如下所示:
The Jam,All Around The World,Single,7 inch,1977
The Jam,Strange Town,Single,7 inch,1979
我上传的表单如下所示:
<form method="post" class="AddCSV_form" enctype="multipart/form-data">
<input type="file" name="records_csv">
<input type="submit" name="csv_sub" value="Upload">
</form>
谢谢。
最佳答案
$file = $_FILES['records_csv']['tmp_name'];
$handle = fopen($file,"r");
$values = array();
while(($csv = fgetcsv($handle,1000,",")) !== false)
{
$values[] = "('".$csv[0]."', '".$csv[1].
"', '".$csv[2]."','".$csv[3]."','".$csv[4]."','ACTIVE')";
}
$sql = "INSERT INTO records (artist, title, type, size, year, status) VALUES "
. implode(',',$values);
if ($conn->query($sql) === TRUE) {
echo "File(s) uploaded successfully!";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
祝你过得愉快......
关于php - 无法获取 fgetcsv 文件以与 MySQL 数据库一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43678854/