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"
私はこれを解決するために多くの方法を試してみましたが...なし任意の結果..