PHP Rückkehr Fehler bei der Verwendung von fgetcsv [Duplikat]
Frage
Mögliche Duplizieren:
gegeben
mysql_fetch_array () erwartet Parameter 1 sein Ressource, boolean in wählen
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);
}
?>
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.