2010-12-01 109 views
3

Possible Duplicate:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in selectPHP返回錯誤時fgetcsv

嗨,我試圖處理與fgetcsv一個CSV,但我所有我要去是錯誤的無限循環

警告:的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); 
     } 
?> 
+0

當我運行從控制檯一個PHP腳本,並提供文件名用空格我面臨這個問題。從文件名中刪除空格後,問題就解決了。 – Muk 2016-01-15 10:36:53

回答

5

這部分有問題

/* 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; 
} 
-2

看起來像您的第一行包含標題。跳過第一行。

+0

因此,此警告警告:第5行testcsv.php中的fopen(「Tile」,「User」...)不表示無效的行打開? – 2010-12-01 18:51:45

+0

如何跳過第一行? – acctman 2010-12-01 18:55:50

4

您正在下載的CSV文件導入一個字符串$filecsv並使用此st作爲文件名在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);    
    } 
} 
0

這是因爲您試圖打開文件的內容而不是文件名。取出file_get_contents線,並與更換fopen電話:

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

應該這樣做......