簡體   English   中英

fputcsv寫入空白文件

[英]fputcsv writing to blank file

我在使用fputcsv導出CSV文件時遇到了一些麻煩。 該文件已下載,但為空白。 我嘗試導出到xls,並且效果很好,但是我想將csv與自定義字段標題一起使用,如下面的代碼所示。 我不確定我是在做錯什么,還是需要更改任何php.ini。 我知道我已經啟用了fopen,但是該文件大約是6.5mb的數據庫信息。

提前致謝!

$colnames = array(
'forDepts' => "Member No.",
'clientId' => "Date joined",
'createdOn' => "Title",
'createdBy' => "First name",
'description' => "Notes"
);

function map_colnames($input)
{
global $colnames;
return isset($colnames[$input]) ? $colnames[$input] : $input;
}

function cleanData(&$str)
{
if($str == 't') $str = 'TRUE';
if($str == 'f') $str = 'FALSE';
if(preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) {
  $str = "'$str";
}
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
$str = mb_convert_encoding($str, 'UTF-16LE', 'UTF-8');
}

// filename for download
$filename = "website_data_" . date('Ymd') . ".csv";

header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: text/csv; charset=UTF-16LE");



$out = fopen("php://output", 'w');

$flag = false;

$result = mysql_query("SELECT forDepts, clientId, createdOn, createdBy, description FROM notes") or die('Query failed!');

while(false !== ($row = mysql_fetch_assoc($result))) {
if(!$flag) {
  // display field/column names as first row
  fputcsv($out, array_keys($row), ',', '"');
  $flag = true;
}
array_walk($row, 'cleanData');
fputcsv($out, array_values($row), ',', '"');
}
fclose($out);
exit;

您的定界符可能有問題。 僅在使用文件名和數組作為參數時(也就是未指定參數3和4),它對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM