Domanda

  

Eventuali duplicati:
   mysql_fetch_array () si aspetta parametro 1 per essere risorsa, boolean given in selezionare

Ciao Sto cercando di elaborare un csv con fgetcsv ma ??io tutto sto andando è un ciclo infinito di errori

Attenzione: fopen ( "mattonelle", "Utente" ...) in testcsv.php sulla linea 5

Attenzione: fgetcsv () si aspetta parametro 1 per essere risorsa, boolean given in /home/ratena/public_html/proc_files/testcsv.php sulla linea 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);   
        }
?>
È stato utile?

Soluzione

questa parte avendo problema

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

Prova sostituire le 3 linee proprio con questo

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

Per passare prima riga

$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;
}

Altri suggerimenti

Si sta scaricando il file CSV in una stringa di $filecsv e l'utilizzo di questa stringa come il nome del file in fopen !!

Non c'è bisogno di scaricare il file, basta passare il nome del file CSV per fopen.

Inoltre ricordatevi di controllare il valore di ritorno di fopen sempre prima di andare avanti e leggere.

$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);               
    }
}  

E 'perché si sta cercando di aprire il contenuto di un file, piuttosto che il nome del file. Rimuovere la linea file_get_contents, e sostituire la chiamata fopen con:

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

che dovrebbe farlo ...

appare come la prima riga contiene le intestazioni. Skip fila uno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top