1
我有下面的代碼,但它運行不正常。它只讀取csv文件的第一行,爲什麼?有誰能夠幫助我?我很沮喪:(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);
Update解決方案:
ini_set('auto_detect_line_endings', true);
添加CSV中的前10行,以便我們可以幫助您 – codeneuss
也許是因爲$ _FILES ['prof_datei'] ['tmp_name']'中的文件是一個臨時文件,在完成此腳本時將被刪除。可能是MySQL擴展中的某些東西給PHP提供了腳本完成的想法,然後PHP刪除該文件。嘗試將它移動到一個真實的文件,處理它,然後刪除它。 – RiggsFolly
[fgetcsv()](http://www.php.net/manual/en/function.fgetcsv.php)的PHP文檔中的一個注意事項是:'注意:如果PHP沒有正確識別行結束時讀取Macintosh計算機上或由Macintosh計算機創建的文件,啓用auto_detect_line_endings運行時配置選項可能有助於解決問題。' –