Ошибка возврата PHP при использовании FGETCSV [дубликата

StackOverflow https://stackoverflow.com/questions/4327833

  •  29-09-2019
  •  | 
  •  

Вопрос

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

Привет, я пытаюсь обработать CSV с fgetcsv, но я все, что я собираюсь бесконечной петлей ошибок

Предупреждение: Fopen («плитка», «пользователь» ...) в TESTCSV.PHP на линии 5

ПРЕДУПРЕЖДЕНИЕ: FGETCSV () ожидает, что параметр 1 должен быть ресурсом, логический, приведенный в /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');

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top