php - 无法获取 fgetcsv 文件以与 MySQL 数据库一起使用

标签 php html mysql csv fgetcsv

我试图将其传递给 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/

相关文章:

php - 比较 Virtuemart 中的产品

php - codeigniter fatal error 使用 $this 不在对象上下文中

php - 用 PHP 生成 CSS,是/否?

php - 如何解码编码的php文件

php - 卡在 Laravel 查询中

php - 如何用php插入MySQL并回显它

html - 占位符文本是可编辑的

javascript:如何使用隐藏标签直接更新较大对象的文本而不添加换行符?

javascript - <a> onload 的替代方案是什么?

php - 如何强制浏览器读取更新的数据库信息?