0
fputcsv를 사용하여 CSV 파일을 내보내는 데 문제가 있습니다. 파일은 다운로드되지만 비어 있습니다. xls 내보내기 시도하고 완벽하게 작동하지만 아래 코드와 같이 사용자 지정 필드 헤더를 사용하여 csv 싶었어요. 내가 잘못한 일을하고 있거나 php.ini를 변경해야 할 필요가 있는지 확신 할 수 없습니다. 난 내가 fopen 사용할 수 있지만 파일이 약 6.5mb의 데이터베이스 정보라는 것을 압니다. 사전에fputcsv 빈 파일에 쓰기
감사합니다!
$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;
['SELECT ... INTO OUTFILE'] (http://dev.mysql.com/doc/en/select-into.html)을 사용할 수없는 몇 가지 이유가 있습니까? – eggyal