Frage

  

Mögliche Duplizieren:
   mysql_fetch_array () erwartet Parameter 1 sein Ressource, boolean in wählen

gegeben

Hallo Ich versuche, eine csv mit fgetcsv zu verarbeiten, aber ich alles, was ich werde ist eine Endlosschleife von Fehlern

Achtung: fopen ( "Tile", "User" ...) in testcsv.php auf Linie 5

Warning: fgetcsv () Parameter 1 erwartet Ressource zu sein, boolean in /home/ratena/public_html/proc_files/testcsv.php auf Linie 6 angegebenen

<?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);   
        }
?>
War es hilfreich?

Lösung

Dieses Teil Problem

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

Versuchen Sie ersetzen die drei Linien mit nur diesem

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

erste Zeile überspringen

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

Andere Tipps

Sie laden die CSV-Datei in einen String $filecsv und mit dieser Zeichenfolge als Dateiname in fopen !!

Es gibt keine Notwendigkeit, um die Datei herunterzuladen, geben Sie einfach den Namen der CSV-Datei fopen.

Beachten Sie auch den Rückgabewert von fopen zu überprüfen immer vor Sie voran gehen und lesen.

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

Es ist, weil Sie versuchen, den Inhalt einer Datei zu öffnen, anstatt den Dateinamen. Entfernen Sie die file_get_contents Linie, und ersetzen Sie den fopen Aufruf mit:

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

Das sollte es tun ...

Sieht aus wie Ihre erste Zeile enthält Header. Überspringen Zeile ein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top