Ошибка возврата PHP при использовании fgetcsv

Возможный дубликат:
mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, boolean задан в select

Привет, я пытаюсь обработать csv с помощью fgetcsv, но я все, что я собираюсь, представляет собой бесконечный цикл ошибок

Предупреждение: fopen («Плитка», «Пользователь» …) в testcsv.php в строке 5

Предупреждение: fgetcsv () ожидает, что параметр 1 будет ресурсом, boolean указан в /home/ratena/public_html/proc_files/testcsv.php в строке 6

<?php $uploadcsv = "/home/ratena/public_html/temp/files/BatchLoadPM15.csv"; $filecsv = file_get_contents($uploadcsv); //$batchid = $_POST['batchid']; $handle = fopen("$filecsv", "r"); while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) { print_r($data); } ?> 

эта часть имеет проблему

 /* this is un-necessary */ $filecsv = file_get_contents($uploadcsv); /* this expecting a file in */ $handle = fopen("$filecsv", "r"); 

Попробуйте заменить 3 строки только этим

 $handle = fopen($uploadcsv, 'r'); 

Пропустить первый ряд

 $column_headers = array(); $row_count = 0; while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) { if ($row_count==0) { $column_headers = $data; } else { print_r($data); } ++$row_count; } 

Вы загружаете CSV-файл в строку $filecsv и используете эту строку как имя файла в fopen !!

Нет необходимости загружать файл, просто передайте имя файла CSV для fopen .

Также не забудьте проверить возвращаемое значение fopen всегда, прежде чем идти дальше и читать.

 $uploadcsv = "/home/namebob/public_html/temp/files/BatchLoadPM15.csv"; // try to open the file. $handle = fopen($uploadcsv, "r"); // error checking. if($handle === false) { die("Error opening $uploadcsv"); } // to skip the header. $skip = true; // file successfully open..now read from it. while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) { // if header..don't print and negate the flag. if($skip) { $skip = !$skip; // else..print. } else { print_r($data); } } 

Это потому, что вы пытаетесь открыть содержимое файла, а не имя файла. Удалите строку file_get_contents и замените вызов fopen на:

 $handle = fopen($uploadcsv, 'r'); 

Это должно сделать это …

Похоже, ваша первая строка содержит заголовки. Пропустите первый ряд.