2010-12-01 6 views
3

Possible Duplicate:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in selectPHP Rückkehr Fehler bei der Verwendung von fgetcsv

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

Warning: fopen („Tile“ "User" ...) in testcsv.php auf Leitung 5

Warning: fgetcsv() erwartet Parameter 1 Ressource, boolean in /home/ratena/public_html/proc_files/testcsv.php auf Leitung gegeben werden, 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); 
     } 
?> 
+0

ich dieses Problem konfrontiert, als ich ein PHP-Skript von der Konsole ausgeführt wird und die Bereitstellung der Dateinamen mit Leerzeichen. Nach dem Entfernen der Leerzeichen aus dem Dateinamen wurde das Problem behoben. – Muk

Antwort

5

dieser Teil Problem mit

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

Versuchen Sie, die drei Linien mit nur diese

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

ersetzen zu überspringen erste Reihe

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

Danke, das hat perfekt funktioniert. Wüsstest du, wie ich die erste Zeile seit meinem Header überspringen könnte? – acctman

+0

@acctman - überprüfen Sie die aktualisierte Antwort erneut – ajreal

+0

Ich erhalte diesen Fehler Parse-Fehler: Syntaxfehler, unerwartet '}' – acctman

-2

Sieht aus wie Ihre erste Zeile Header enthält. Überspringe die erste Zeile.

+0

Also diese Warnung Warnung: fopen ("Tile", "User" ...) in testcsv.php in Zeile 5 Zeigt keine ungültige Zeile zum Öffnen an? –

+0

Wie überspringe ich die erste Zeile? – acctman

+0

Sie können keine Datei "fopen", die nicht existiert. Der erste Parameter von 'fopen' verwendet den String-Dateinamen, nicht die zu lesenden Daten. Das Problem tritt vor der Zeile "fgetcsv", so dass ich nicht sicher bin, wie das Überspringen von Überschriften möglich ist, aber allein die Ursache des Problems ... – ircmaxell

4

Sie sind Download-Datei die CSV in eine Zeichenfolge $filecsv und mit dieser st Ring als Dateiname in fopen !!

Sie müssen die Datei nicht herunterladen, sondern geben Sie einfach den Namen der CSV-Datei an .

Denken Sie auch daran, den Rückgabewert von immer vor überprüfen Sie weiterlesen.

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

Es ist, weil Sie versuchen, den Inhalt einer Datei anstelle des Dateinamens zu öffnen. Entfernen Sie die file_get_contents Linie, und ersetzen Sie den fopen Anruf mit:

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

Das sollte es tun ...

Verwandte Themen