如何用PHP将CSV文件写入并保存到服务器?

如何用PHP将CSV文件写入并保存到服务器?,php,csv,Php,Csv,我正在尝试使用PHP创建一个新的CSV文件,并将其上载或移动到服务器的新部分,但它返回的电子表格是第一行中只有值为404或1的第一个单元格的电子表格。我做错了什么 我的代码附在下面 // genrate new general spreadsheet $filepath = substr($file_path, 1); $data = load_csv_file($filepath); header('Content-type: text/csv'); header('Content-Disp

我正在尝试使用PHP创建一个新的CSV文件,并将其上载或移动到服务器的新部分,但它返回的电子表格是第一行中只有值为404或1的第一个单元格的电子表格。我做错了什么

我的代码附在下面

// genrate new general spreadsheet
$filepath = substr($file_path, 1);
$data = load_csv_file($filepath);

header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="file-saved.csv"');

$fp = fopen('php://output', 'wb');

foreach ($data as $row) {
$output = fputcsv($fp, $row);
}

$filename = "file-saved.csv";
file_put_contents( $filename, $output);

fclose($fp);
$data变量是另一个CSV文件中的值数组

$output = [];

foreach($data as $row) {
 $output[] = .. 
}
...

}

它现在用随机数填充整行,而不仅仅是第一个单元格。数组([0]=>数组([0]=>日期时间[1]=>货币名称[2]=>本地日期时间[3]=>终端ID[4]=>商户ID[5]=>商户名称位置[1]=>数组([0]=>2019年08月06日00:00:00[1]=>USD[2]=>2019年08月05日02:05:23[3]=>TEST[4]=>8124HSLA462288[5]=>TEST DATA))根据它返回写入字符串的长度(要处理,$fp)。也许您应该先保存$fp而不是$output….或者写入磁盘上的实际文件,而不是
php://output
-取决于您是要将文件存储在服务器的文件系统中,还是强制下载。(或者两者同时进行?然后你仍然可以先写入一个普通文件,然后从那里读回内容(或者只是重定向到它。)我也试过了。它返回一个空的CSV文件。只有代码的答案几乎总是可以通过添加解释来改进。在本例中,请指出您显示的代码旨在将输出收集到数组
$output
,并且应在循环结束时处理该数组以转到文件。
  error_reporting(0);
  $file_n = public_path('/csv_file/product_details.csv');
  $infoPath = pathinfo($file_n);
  if($infoPath['extension'] == 'csv'){
      $file = fopen($file_n, "r");

      $i = 0;
      $all_data = array();

          while ( ($filedata = fgetcsv($file, null, "|")) !==FALSE) {
            $num = count($filedata );
            for ($c=0; $c < $num; $c++) {
              $all_data[$i][] = $filedata [$c];
            }
            $i++;
          }
          fclose($file);
          foreach($all_data as $importData){
            $insertData = array(
                   "article_number"=>$importData[0],
                   "article_name"=>$importData[1],
                   "article_description"=>$importData[2],
                   "article_price"=>$importData[3],
                   "article_manufacturer"=>$importData[6],
                   "article_productgroupkey"=>$importData[7],
                   "article_productgroup"=>$importData[8],
                   "article_ean"=>$importData[9],
                   "article_hbnr"=>$importData[10],
                   "article_shippingcosttext"=>$importData[11],
                   "article_amount"=>$importData[12],
                   "article_paymentinadvance"=>$importData[13],
                   "article_maxdeliveryamount"=>$importData[14],
                   "article_energyefficiencyclass"=>$importData[15]
            );

          insertData($insertData);
          }

  }else{
    echo "Invalid file extension.";
  }
    //write your insert query here for $data
  }elseif($article_number->count() > 0){

   //article_number already present then update the table.UPDATE QUERY

  }