0
我想從一個MySQL查詢創建一個CSV文件,但我有日期的問題。我需要強制用雙引號各個領域,我使用這個功能:PHP - 導出查詢到CSV錯誤的字符在日期字段
$fp = fopen($filename, 'w');
$result = mysqli_query($db_conn, $query) or die(mysqli_error($db_conn));
while($row = mysqli_fetch_assoc($result)) {
//fputcsv($fp, $row);
fputcsv($fp, array_map(function($value) {
if ($value == null || $value == "" || !isset($value) || $value === "0000-00-00 00:00:00") {
return '""';
}
///remove any ESCAPED double quotes within string.
$value = str_replace('\\"','"',$value);
//then force escape these same double quotes And Any UNESCAPED Ones.
$value = str_replace('"','\"',$value);
// remove \n
$value = str_replace("\n", '', $value);
$value = str_replace("\r", '', $value);
$value = str_replace("\r\n", '', $value);
//force wrap value in quotes and return
return "\"$value\"";
}, $row), ',', chr(0));
}
fclose($fp);
出口適用於所有的(我覺得...)領域,除了從日期字段。 WHE我試着讀這樣的文件:
while (($data = fgetcsv($handle, null, ",", '"', '"')) !== false) {
// Do someting
}
所有字段都用雙引號,但是,日期場有這樣的內容:
"\x00"2008-12-31 10:08:43"\x00"
我嘗試過很多辦法來解決這一點,但沒有..任何結果..