fgetcsv只读取csv文件的第一行(UPDATE:includes solution)

时间:2015-06-19 11:27:17

标签: php mysql csv pdo fgetcsv

我有以下代码,但效果不佳。它只读取csv文件的第一行,为什么?有谁能够帮我?我很沮丧:(

$handle = fopen($_FILES['prof_datei']['tmp_name'], "r");

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $insert_profs_data = $db->prepare("INSERT INTO professoren (name, titel_prof, titel_dr, titel_ing) VALUES (:eins, :zwei, :drei, :vier)");
    $insert_profs_data->bindParam(':eins', $data[0]);
    $insert_profs_data->bindParam(':zwei', $data[1]);
    $insert_profs_data->bindParam(':drei', $data[2]);
    $insert_profs_data->bindParam(':vier', $data[3]);
    $insert_profs_data->execute();
}

fclose($handle);

更新解决方案:如果您正在使用mac来执行此代码,则应在打开文件之前添加以下代码行:

ini_set('auto_detect_line_endings', true);

1 个答案:

答案 0 :(得分:1)

根据Mark Ba​​ker和johny的评论发表答案。

在Mac(OS X)以及可能使用不同行结尾的其他操作系统上,您可以在读取文件之前将auto_detect_line_endings设置为true。

ini_set('auto_detect_line_endings', true);
$contents = file('unknowntype.txt');

这应解决PHP只读取文件第一行的问题。