質問

可能な複製:
mysql_fetch_array()は、パラメーター1がリソースであることを期待し、selectでboolean

こんにちは私はFGETCSVでCSVを処理しようとしていますが、私が行くのはエラーの無限のループだけです

警告:fopen( "tile"、 "user" ...)in testcsv.php on 5行目

警告:fgetcsv()は、パラメーター1がリソースであると予想し、/home/ratena/public_html/proc_files/testcsv.phpでboolean

<?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);   
        }
?>
役に立ちましたか?

解決

この部分に問題があります

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

他のヒント

CSVファイルを文字列にダウンロードしています $filecsv この文字列をファイル名として使用します 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);               
    }
}  

ファイル名ではなく、ファイルの内容を開こうとしているためです。を削除します file_get_contents 線を交換します fopen 電話:

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

それはそれをするはずです...

最初の行にはヘッダーが含まれているようです。行1をスキップします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top