如何用PHP将CSV文件写入并保存到服务器?
我正在尝试使用PHP创建一个新的CSV文件,并将其上载或移动到服务器的新部分,但它返回的电子表格是第一行中只有值为404或1的第一个单元格的电子表格。我做错了什么 我的代码附在下面如何用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
// 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
}