2015-06-19 5 views
1

У меня есть следующий код, но он не работает. он только считывает первую строку csv-файла, почему? Кто-нибудь может мне помочь? я расстроен :(fgetcsv только чтение первой строки csv-файла (UPDATE: включает решение)

$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 Решение: Если вы работаете с Mac, чтобы выполнить этот код, вы должны добавить следующую строку кода, прежде чем открыть файл:

ini_set('auto_detect_line_endings', true); 
+0

PLS. добавьте первые 10 строк из CSV, чтобы мы могли помочь вам – codeneuss

+0

Возможно, потому, что файл в '$ _FILES ['prof_datei'] ['tmp_name']' является временным файлом, который будет удален после завершения этого скрипта. Возможно, что-то в расширении MySQL дает PHP идею завершения скрипта, а затем PHP удаляет файл. Попробуйте переместить его в реальный файл, обработать его, а затем удалить. – RiggsFolly

+3

Замечание в документах PHP для [fgetcsv()] (http://www.php.net/manual/en/function.fgetcsv.php) читает: 'Примечание: если PHP неправильно распознает окончания строк, когда чтение файлов, созданных или созданных компьютером Macintosh, включение опции настройки времени автономной работы auto_detect_line_endings может помочь решить проблему. « –

ответ

1

проводке ответить на основе Марка Бейкера и комментарии Johny в.

на Mac (OS X) и, возможно, других операционных систем, которые используют различные концовки линии, вы можете установить auto_detect_line_endings истина, перед чтением файла.

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

Это должно решить проблему чтения PHP только первой строки файла.

 Смежные вопросы

  • Нет связанных вопросов^_^