Возможный дубликат:
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');
Это должно сделать это …
Похоже, ваша первая строка содержит заголовки. Пропустите первый ряд.