我有以下代码,但效果不佳。它只读取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);
答案 0 :(得分:1)
根据Mark Baker和johny的评论发表答案。
在Mac(OS X)以及可能使用不同行结尾的其他操作系统上,您可以在读取文件之前将auto_detect_line_endings
设置为true。
ini_set('auto_detect_line_endings', true);
$contents = file('unknowntype.txt');
这应解决PHP只读取文件第一行的问题。